如何在训练后获得分数和准确度

时间:2016-05-03 06:25:46

标签: python machine-learning neural-network deep-learning keras

model.fit(X_train, y_train, batch_size = batch_size,
     nb_epoch = 4, validation_data = (X_test, y_test),
     show_accuracy = True)    
score = model.evaluate(X_test, y_test, 
     batch_size = batch_size, show_accuracy = True, verbose=0)

给出标量输出,因此以下代码不起作用。

print("Test score", score[0])
print("Test accuracy:", score[1])

我得到的输出是:     训练20000个样本,验证5000个样本

Epoch 1/4

20000/20000 [==============================] - 352s - loss: 0.4515 - val_loss: 0.4232

Epoch 2/4

20000/20000 [==============================] - 381s - loss: 0.2592 - val_loss: 0.3723

 Epoch 3/4

 20000/20000 [==============================] - 374s - loss: 0.1513 - val_loss: 0.4329

 Epoch 4/4

 20000/20000 [==============================] - 380s - loss: 0.0838 - val_loss: 0.5044

Keras版本1.0

我怎样才能获得准确性?请帮忙

2 个答案:

答案 0 :(得分:4)

如果您使用Sequential型号,可以尝试( CODE UPDATED ):

nb_epochs = 4
history = model.fit(X_train, y_train, batch_size = batch_size,
 nb_epoch = nb_epochs, validation_data = (X_test, y_test),
 show_accuracy = True)

print("Test score", history.history["val_loss"][nb_epochs - 1])
print("Test acc", history.history["val_acc"][nb_epochs - 1])

答案 1 :(得分:3)

感谢Marcin,你是对的。

代码必须像这样

model.compile(loss='binary_crossentropy',
          optimizer = 'adam',
          metrics=["accuracy"])

show_accuracy在model.fit中没有用处,需要从那里删除。