2017-01-28 8 views
7

私はこの単純なニューラルネットワークの出力をプロットしたい:Keras - プロットトレーニング、検証およびテストセットの精度

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 
history = model.fit(x_test, y_test, nb_epoch=10, validation_split=0.2, shuffle=True) 

model.test_on_batch(x_test, y_test) 
model.metrics_names 

私はトレーニングと検証の精度損失をプロットしています

print(history.history.keys()) 
# "Accuracy" 
plt.plot(history.history['acc']) 
plt.plot(history.history['val_acc']) 
plt.title('model accuracy') 
plt.ylabel('accuracy') 
plt.xlabel('epoch') 
plt.legend(['train', 'validation'], loc='upper left') 
plt.show() 
# "Loss" 
plt.plot(history.history['loss']) 
plt.plot(history.history['val_loss']) 
plt.title('model loss') 
plt.ylabel('loss') 
plt.xlabel('epoch') 
plt.legend(['train', 'validation'], loc='upper left') 
plt.show() 

今度は、model.test_on_batch(x_test, y_test)からテストセットの精度を追加したいが、model.metrics_namesから同じ値を得る。'acc'はトレーニングデータの精度をプロットするために利用されますplt.plot(history.history['acc'])。テストセットの精度をどのようにプロットすることができますか?

答えて

3

あなたは列車のセットではなく、テストセットを訓練しているので同じです。それをしないでください、ちょうどトレーニングセットに訓練:

history = model.fit(x_test, y_test, nb_epoch=10, validation_split=0.2, shuffle=True) 

変更へ:

history = model.fit(x_train, y_train, nb_epoch=10, validation_split=0.2, shuffle=True) 
+0

すみません、私はNNを訓練するために設定し、常に利用してきた訓練は、それが監督をされています。私は機械学習の新人で、 'model.fit(...)'の結果について少し混乱しています。_loss_、_acc_、_val__loss_、_val__acc_を取得しています。しかし、どこでテストの損失の価値を見つけることができますか? – Simone

+0

@ Simoneテストセット上でmodel.evaluateを使用して、テストセット上の損失とメトリックを取得できます。ちょうどあなたが正しい変数を使用するようにしてください。 –

+0

私は_model.evaluete_を使用しましたが、_accuracy_と_loss_を取得しましたが、トレーニングで取得した_accuracy_と_accuracy_をテストで得られたものと区別できないため、プロットできません。 – Simone

関連する問題