Я пытаюсь использовать трансферное обучение для обучения модели изображений, и в настоящее время я сталкиваюсь с проблемой, которую не понимаю. Чтобы проверить свою сеть, я подталкиваю одни и те же данные к обучению и проверке, однако у меня была совсем другая подготовка и проверка точности. Может ли кто-нибудь помочь мне отладить проблему?
base_model = applications.MobileNetV2(weights='imagenet', include_top=False,
input_shape=(IMAGE_LENGTH, IMAGE_WIDTH, 3))
CLASSES = 2
print('================='+str(len(base_model.layers))+"==================")
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation='relu')(x)
predictions = Dense(CLASSES, activation='softmax')(x)
model = Model(inputs=base_model.input, outputs=predictions)
for layer in model.layers[:100]:
layer.trainable = False
for layer in model.layers[100:]:
layer.trainable = True
model.compile(optimizer=optimizers.Adam(lr=CNN_parameters.learning_rate), loss='categorical_crossentropy', metrics=['accuracy'])
model.compile(optimizer=optimizers.SGD(lr=0.005), loss='categorical_crossentropy', metrics=['accuracy'])
train_datagen = ImageDataGenerator(
#preprocessing_function=preprocess_input,
rescale=CNN_parameters.rescale,
#rotation_range=CNN_parameters.rotation_range,
width_shift_range=CNN_parameters.width_shift_range,
height_shift_range=CNN_parameters.height_shift_range,
shear_range=CNN_parameters.shear_range,
zoom_range=CNN_parameters.zoom_range,
#horizontal_flip=CNN_parameters.horizontal_flip,
fill_mode='nearest'
)
train_generator = train_datagen.flow(
x_train, y_train,
batch_size=CNN_parameters.batch_size)
history = model.fit_generator(train_generator,
steps_per_epoch=64,
epochs=CNN_parameters.epochs,
validation_data=train_generator,
validation_steps=64)
Однако, когда я запускаю код, я получаю
64/64 [==============================] - 35s 554ms/step - loss: 0.4321 - accuracy: 0.8132 - val_loss: 0.8156 - val_accuracy: 0.5632
Epoch 2/50
64/64 [==============================] - 33s 523ms/step - loss: 0.3161 - accuracy: 0.8750 - val_loss: 0.9090 - val_accuracy: 0.5437
Epoch 3/50
64/64 [==============================] - 33s 515ms/step - loss: 0.2945 - accuracy: 0.8817 - val_loss: 0.7585 - val_accuracy: 0.5869
Epoch 4/50
64/64 [==============================] - 34s 531ms/step - loss: 0.2992 - accuracy: 0.8760 - val_loss: 0.9599 - val_accuracy: 0.5305
Epoch 5/50
64/64 [==============================] - 33s 515ms/step - loss: 0.2800 - accuracy: 0.8825 - val_loss: 0.8358 - val_accuracy: 0.5557
Epoch 6/50
64/64 [==============================] - 34s 528ms/step - loss: 0.2720 - accuracy: 0.8923 - val_loss: 0.9077 - val_accuracy: 0.5327
Epoch 7/50
64/64 [==============================] - 33s 515ms/step - loss: 0.2592 - accuracy: 0.8960 - val_loss: 0.7999 - val_accuracy: 0.5601
Epoch 8/50
64/64 [==============================] - 34s 536ms/step - loss: 0.2665 - accuracy: 0.8898 - val_loss: 0.8241 - val_accuracy: 0.5483
Epoch 9/50
64/64 [==============================] - 33s 520ms/step - loss: 0.2527 - accuracy: 0.8991 - val_loss: 0.7893 - val_accuracy: 0.5691
Epoch 10/50
64/64 [==============================] - 34s 533ms/step - loss: 0.2430 - accuracy: 0.9011 - val_loss: 0.8538 - val_accuracy: 0.5403
Epoch 11/50
64/64 [==============================] - 34s 526ms/step - loss: 0.2552 - accuracy: 0.8945 - val_loss: 0.8837 - val_accuracy: 0.5295
Epoch 12/50
64/64 [==============================] - 34s 539ms/step - loss: 0.2422 - accuracy: 0.9067 - val_loss: 0.8678 - val_accuracy: 0.5410
Epoch 13/50
64/64 [==============================] - 33s 520ms/step - loss: 0.2396 - accuracy: 0.9026 - val_loss: 0.7401 - val_accuracy: 0.5991
Epoch 14/50
64/64 [==============================] - 35s 541ms/step - loss: 0.2334 - accuracy: 0.9045 - val_loss: 0.7285 - val_accuracy: 0.5938
Epoch 15/50
64/64 [==============================] - 33s 517ms/step - loss: 0.2420 - accuracy: 0.9014 - val_loss: 0.8004 - val_accuracy: 0.5518
Поскольку я использую те же данные для обучения и проверки, яЯ ожидаю увидеть очень похожую точность при обучении и проверке. Я не понимаю, почему они такие разные. Я делаю что-то не так? Спасибо