记录keras使用预训练模型vgg16分类,损失和准确度不变。

问题keras使用预训练模型vgg16分类,损失和准确度不变。

细节:使用keras训练一个两类数据,正负比例1:3,在vgg16后添加了几个全链接并初始化了。并且对所有层都允许训练。

但是准确度一直是0.75.


数据预先处理已经检查过格式正确


再将模型中relu改成sigmoid就正常了。

数据处理程序

import os
import pickle
import numpy as np

import DataFile
import SelectiveSearch
import Generator
import IoU
import Model_CRNN_VGG16

from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import ModelCheckpoint

def data_generator(gen1,gen0):
    while True:
        data_pos = next(gen1)
        data_neg = next(gen0)
        ret_X = np.vstack((da
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍如何用Keras实现用VGG训练模型分类四种天气图像,并绘制图像。 首先,您需要准备数据集。假设您的四种天气图像分别为“晴天”、“雨天”、“多云”和“雾霾”,并将它们存储在四个不同的文件夹中。每个文件夹中应该只包含相应天气的图像。 接下来,我们可以使用Keras中的ImageDataGenerator来加载图像数据集,并进行数据增强。数据增强可以帮助我们扩充数据集,提高模型的泛化能力。 下面是实现代码: ```python from keras.preprocessing.image import ImageDataGenerator train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) test_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory( 'train', target_size=(224, 224), batch_size=32, class_mode='categorical') validation_generator = test_datagen.flow_from_directory( 'test', target_size=(224, 224), batch_size=32, class_mode='categorical') ``` 这里我们使用了ImageDataGenerator来进行数据增强,并使用flow_from_directory方法加载数据集。其中,train文件夹存储训练集图像,test文件夹存储测试集图像。 接下来,我们可以定义模型。这里我们使用VGG16的卷积部分作为特征提取器,然后添加几个全连接层进行分类。由于我们没有使用训练模型,所以需要将VGG16的权重随机初始化。 ```python from keras.models import Sequential from keras.layers import Dense, Flatten from keras.applications.vgg16 import VGG16 vgg16 = VGG16(weights=None, include_top=False, input_shape=(224, 224, 3)) model = Sequential() model.add(vgg16) model.add(Flatten()) model.add(Dense(256, activation='relu')) model.add(Dense(4, activation='softmax')) ``` 最后,我们可以使用compile方法编译模型,并使用fit_generator方法训练模型。 ```python model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit_generator( train_generator, steps_per_epoch=2000, epochs=50, validation_data=validation_generator, validation_steps=800) ``` 训练完成后,我们可以使用matplotlib库绘制模型的准确率和损失函数曲线。 ```python import matplotlib.pyplot as plt acc = history.history['accuracy'] val_acc = history.history['val_accuracy'] loss = history.history['loss'] val_loss = history.history['val_loss'] epochs = range(len(acc)) plt.plot(epochs, acc, 'r', label='Training accuracy') plt.plot(epochs, val_acc, 'b', label='Validation accuracy') plt.title('Training and validation accuracy') plt.legend(loc=0) plt.figure() plt.plot(epochs, loss, 'r', label='Training loss') plt.plot(epochs, val_loss, 'b', label='Validation loss') plt.title('Training and validation loss') plt.legend(loc=0) plt.show() ``` 这样,我们就完成了用Keras实现用VGG训练模型分类四种天气图像,并绘制图像的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值