代码
导入numpy as np
来自keras.preprocessing.image import imagedatagenerator
从keras.models导入序列,模型
从keras.layers导入退出、展平、密集、输入
从Keras导入应用程序
来自keras.preprocessing导入图像
从keras导入后端作为k
k.设置图像尺寸排序(‘tf’)
#我们图像的尺寸。
img_宽度,img_高度=150150
top_model_weights_path='瓶颈_fc_model.h5'
train_data_dir='猫和狗数据集/列车'
validation_data_dir='猫和狗数据集/验证'
Nb_火车样本=20000
nb_验证_样本=5000
纪元=50
巴契尺寸=16
输入张量=输入(形状=(150150,3))
base_model=applications.vg16(包括_top=false,weights='imagenet',input_tensor=input_tensor)
对于基础层中的层\model.layers:
layer.trainable=错误
top_model=sequential()。
top_model.add(平展(input_shape=base_model.output_shape[1:]))
top_model.add(密集(256,activation=“relu”))
Top_Model.Add(退出(0.5))
top_model.add(密集(1,激活='SoftMax'))
顶层模型。加载权重(顶层模型权重路径)
模型=模型(输入=基本\模型.输入,输出=顶部\模型(基本\模型.输出))
datagen=imagedatagenerator(重新缩放=1.255
train_data=datagen.flow_from_directory(train_data_dir,target_size=(img_width,img_height),batch_size=batch_size,classes=['dogs','cats'],class_mode=“binary”,shuffle=false)
validation_data=datagen.flow_from_directory(validation_data_dir,target_size=(img_width,img_height),classes=[‘dogs’,‘cats’],batch_size=batch_size,class_mode=“binary”,shuffle=false)
model.compile(optimizer='adam',loss='binary_cross熵',metrics=['accuracy'])
model.fit_生成器(train_data,steps_per_epoch=nb_train_samples//batch_size,epoch=epoch,validation_data=validation_data,shuffle=false,verbose=
< /代码>
我已经使用keras(使用vggg16网络学习的传输)在猫和狗数据集(
https://www.kaggle.com/c/dogs-vs-cats/data
)上实现了图像分类器。代码运行无误,但精度在半个世纪内保持在0.0%左右,半个世纪后精度提高到50%。我用原子加氢。
如何解决这个问题。我真的不认为我对vg16这样的数据集有偏见(尽管我对这个领域比较陌生)。
我已经在猫狗数据集上实现了一个图像分类器(
https://www.kaggle.com/c/dogs-vs-cats/data
)使用keras(使用vgg16网络学习传输)。代码运行无误,但精度在半个世纪内保持在0.0%左右,半个世纪后精度提高到50%。我在用氢原子。
如何解决这个问题。我真的不认为我对vg16这样的数据集有偏见(尽管我对这个领域比较陌生)。