Как построить график эпохи против val_acc и графика эпохи против val_loss в CNN? - PullRequest
0 голосов
/ 18 февраля 2019

Я использовал сверточную нейронную сеть (CNN) для обучения набора данных.Здесь я получаю историю, val_loss, val_acc, полную потерю, время обучения и т. Д. Как историю.Если я хочу вычислить среднее значение точности, то как получить доступ к val_acc и как построить график эпохи против val_acc и эпохи против val_loss?

convnet = input_data(shape=[None, IMG_SIZE, IMG_SIZE, 3], name='input')
convnet = conv_2d(convnet, 32, 3, activation='relu')
convnet = max_pool_2d(convnet, 3)

convnet = conv_2d(convnet, 64, 3, activation='relu')
convnet = max_pool_2d(convnet, 3)

convnet = conv_2d(convnet, 128, 3, activation='relu')
convnet = max_pool_2d(convnet, 3)

convnet = conv_2d(convnet, 32, 3, activation='relu')
convnet = max_pool_2d(convnet, 3)

convnet = conv_2d(convnet, 64, 3, activation='relu')
convnet = max_pool_2d(convnet, 3)

convnet = fully_connected(convnet, 1024, activation='relu')
convnet = dropout(convnet, 0.8)

convnet = fully_connected(convnet, 4, activation='softmax')
convnet = regression(convnet, optimizer='adam', learning_rate=LR, loss='categorical_crossentropy', name='targets')

model = tflearn.DNN(convnet, tensorboard_dir='log')

if os.path.exists('{}.meta'.format(MODEL_NAME)):
   model.load(MODEL_NAME)
   print('model loaded!')

train = train_data[:-150]
test = train_data[-50:]

X = np.array([i[0] for i in train]).reshape(-1,IMG_SIZE,IMG_SIZE,3)
Y = [i[1] for i in train]

test_x = np.array([i[0] for i in test]).reshape(-1,IMG_SIZE,IMG_SIZE,3)
test_y = [i[1] for i in test]

hist=model.fit({'input': X}, {'targets': Y}, n_epoch=8, validation_set=({'input': test_x}, {'targets': test_y}),
snapshot_step=40, show_metric=True, run_id=MODEL_NAME)
model.save(MODEL_NAME)

Ответы [ 2 ]

0 голосов
/ 23 августа 2019

попробуйте следующее:

history = model.fit(X_train, Y_train, validation_data=(X_test, Y_test), batch_size=32, epochs=10, verbose=1)

# Get training and test loss histories
training_loss = history.history['loss']
test_loss = history.history['val_loss']

# Create count of the number of epochs
epoch_count = range(1, len(training_loss) + 1)

# Visualize loss history
plt.plot(epoch_count, training_loss, 'r--')
plt.plot(epoch_count, test_loss, 'b-')
plt.legend(['Training Loss', 'Test Loss'])
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.show();

кредит до https://chrisalbon.com/deep_learning/keras/visualize_loss_history/

0 голосов
/ 20 марта 2019

Вы можете использовать обратные вызовы в Tensorflow .В частности, вы можете использовать обратные вызовы Keras , такие как CSVLogger, которые будут передавать ваши результаты эпохи в CSV.Оттуда вы можете делать все виды анализа.

Пример на основе вашего кода:

csv_logger = CSVLogger('training.log')
model.fit({'input': X}, {'targets': Y}, ..., callbacks=[csv_logger]
...