我正在使用带有25000张图像的猫狗数据集 .

xtrain.shape = (25000, 224, 224, 3)
ytrain.shape = (25000, 2)

然后使用InceptionV3,我试图在这个数据集上微调模型 .

from keras.applications.inception_v3 import InceptionV3
base_model = InceptionV3(include_top=False,weights='imagenet')
base = base_model.output
layer1 = GlobalAveragePooling2D()(base)
layer2 = Dense(128,activation='relu')(layer1)
prediction = Dense(2,activation='softmax')(layer2)
model = Model(inputs=base_model.input,outputs=prediction)

for layer in base_model.layers:
    layer.trainable = False
model.compile(optimizer=Adam(lr=0.001), 
              loss='categorical_crossentropy',metrics=['accuracy'])

然后我训练了最后一层:

model.fit(x=xtrain,y=ytrain,batch_size=100,
      epochs=10,verbose=1,validation_split=0.2)

然后我调整了最后50层:

for layer in model.layers[:250]:
    layer.trainable = False
for layer in model.layers[250:]:
    layer.trainable = True

from keras.optimizers import Adam
model.compile(optimizer=Adam(lr=0.0001), 
             loss='categorical_crossentropy',metrics=['accuracy'])

model.fit(x=x,y=y,batch_size=100,epochs=50,verbose=1,validation_data= . 
         (xx,yy))

我正在训练50个纪元,我的训练准确率达到95%左右,但验证准确率只有50% . 我不明白为什么 . 此外,imagenet数据集已包含cat和dog类,因此不需要对我的数据集进行大量训练 . 我知道我错了,有人请指出错误 .