浅谈浅谈keras使用预训练模型使用预训练模型vgg16分类分类,损失和准确度不变损失和准确度不变
主要介绍了浅谈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((data_pos[0],data_neg[0]))
ret_y = np.vstack((data_pos[1],data_neg[1]))
index = np.arange(ret_y.shape[0])
np.random.shuffle(index)
ret_X = ret_X[index, :, :, :] # X_train是训练集,y_train是训练标签
ret_y = ret_y[index]
yield ret_X,ret_y
if __name__ == "__main__":
type = "train"
# 数据生成器,每个mini-batch包含32个正样本(属于VOC 20个类别),96个负样本(background)
RESIZE = (224, 224)
path = "category_images"
categories = os.listdir(path)
categories.append('background')
print(categories)
train_1_datagen = ImageDataGenerator(
rescale=1.0/255,
#shear_range=0.2,
#zoom_range=0.2,
horizontal_flip=True)
train_1_generator = train_1_datagen.flow_from_directory(
'category_images',
target_size=RESIZE,
batch_size=32,
classes = categories)
train_0_datagen = ImageDataGenerator(
rescale=1.0 / 255,
#shear_range=0.2,
#zoom_range=0.2,
horizontal_flip=True)
train_0_generator = train_0_datagen.flow_from_directory(
'category_background',
target_size=RESIZE,
batch_size=32*3,
classes=categories)
评论0