Я использую набор данных о кошках и собаках с 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 уже содержит классы о кошках и собаках, поэтому нет необходимости в тяжелых тренировках для моего набора данных.Я знаю, что я где-то не прав, кто-то, пожалуйста, укажите на ошибку.