重新训练初始v3时验证准确度低

时间:2018-05-25 05:18:19

标签: tensorflow keras deep-learning computer-vision convolutional-neural-network

我使用了包含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数据集已包含猫狗类,因此不需要对我的数据集进行大量训练。我知道我在某处错了,有人请指出错误。

0 个答案:

没有答案