Точность валидации, показанная в эпоху, намного выше, чем я получаю - PullRequest
0 голосов
/ 11 ноября 2018

Я новичок в Keras и CNN и поэтому борюсь со следующим.

Когда я тренируюсь, используя набор данных изображений, используя следующий код:

train_batches = gen1.flow_from_directory(train_path, target_size=(224,224),classes = ['garbage', 'recycled', 'organic'], batch_size = batch)    

valid_batches = gen1.flow_from_directory(valid_path, target_size=(224,224), classes = ['garbage', 'recycled', 'organic'], batch_size = batch)

test_batches = gen1.flow_from_directory(test_path, target_size=(224,224), classes = ['garbage', 'recycled', 'organic'], batch_size = batch)

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=( 224, 224, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())  # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(3))
model.add(Activation('softmax'))

model.compile(optimizer=Adam(lr=.0001), loss= 'categorical_crossentropy', metrics = ['accuracy'])

history = model.fit_generator(train_batches, steps_per_epoch =training_data_size//batch, validation_data = valid_batches, validation_steps=validation_data_size//batch, epochs=5, verbose=2)
model.save_weights('Try1.h5')

Я получаю 77% точности проверки после 5 эпох, как видно на рисунке:

введите описание изображения здесь

Но когда я пытаюсь создать для него матрицу путаницы, я получаю 35% точности проверки:

predictions = model.predict_generator(valid_batches, steps=validation_data_size//batch,verbose=1)
conf_mat2 = confusion_matrix(valid_batches.classes, np.argmax(predictions,axis=1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...