Keras .flow_from_dataframe производит плохую потерю проверки / акк - PullRequest
0 голосов
/ 10 мая 2019

В настоящее время я разрабатываю модель для распознавания изображений в Keras, и мои изображения хранятся в одном каталоге. Я получил кадр данных, содержащий True Labels. Использование .flow_from_dataframe и fit_generator приводит к очень плохой потере / точности проверки (случайным образом) во время обучения.

Сначала я подумал о переоснащении, но проблема, похоже, связана с методом .flow_from_dataframe. Когда я пробую метод flow_from_directory, результаты проверки выглядят намного лучше и достаточно хорошо соответствуют точности обучения. Таким образом, я предполагаю, что ошибка вызвана несоответствием данных проверки и истинных меток val_dataset.

Правильно ли я использовал метод?

имя_файл

class_id

fahrzeug_klasse

* +1012 *Dataframe containing Label information
training_set = train_datagen.flow_from_dataframe(dataframe=train_df, 
                                                 directory=r'C:\Users\aaa\Data\car_im',
                                                 x_col ='fname',
                                                 y_col = 'Marke',
                                                 target_size = (224, 224),
                                                 batch_size = 64,
                                                 color_mode='rgb',
                                                 class_mode = 'categorical')

test_set = test_datagen.flow_from_dataframe(dataframe=test_df, 
                                                 directory=r'C:\Users\aaa\Data\car_im',
                                                 x_col ='fname',
                                                 y_col = 'Marke',
                                                 target_size = (224, 224),
                                                 color_mode='rgb',
                                                 batch_size = 64,
                                                 class_mode = 'categorical',
                                                 shuffle=False)

    Found 9130 images belonging to 16 classes.
    Found 2283 images belonging to 16 classes.

....

transfer_model.fit_generator(training_set,
                         steps_per_epoch = 140,
                         epochs = 10,
                         validation_data = test_set,
                         validation_steps = 4)

Epoch 1/10
140/140 [==============================] - 57s 410ms/step - loss: 1.4191 - categorical_accuracy: 0.5396 - val_loss: 4.9266 - val_categorical_accuracy: 0.0078
Epoch 2/10
140/140 [==============================] - 55s 395ms/step - loss: 1.2635 - categorical_accuracy: 0.5911 - val_loss: 3.6264 - val_categorical_accuracy: 0.1211
Epoch 3/10
140/140 [==============================] - 56s 397ms/step - loss: 1.1892 - categorical_accuracy: 0.6148 - val_loss: 3.9831 - val_categorical_accuracy: 0.1836
Epoch 4/10
140/140 [==============================] - 55s 395ms/step - loss: 1.0753 - categorical_accuracy: 0.6498 - val_loss: 3.7372 - val_categorical_accuracy: 0.0469
Epoch 5/10
140/140 [==============================] - 56s 398ms/step - loss: 1.0013 - categorical_accuracy: 0.6723 - val_loss: 5.8073 - val_categorical_accuracy: 0.0273
Epoch 6/10
140/140 [==============================] - 55s 392ms/step - loss: 0.9312 - categorical_accuracy: 0.6884 - val_loss: 5.8702 - val_categorical_accuracy: 0.0039
Epoch 7/10
 84/140 [=================>............] - ETA: 21s - loss: 0.8100 - categorical_accuracy: 0.7367
...