2017-01-28 58 views
7

Tôi muốn âm mưu đầu ra của mạng nơron đơn giản này:Keras - đào tạo Lô, xác nhận và tập kiểm tra độ chính xác

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 

Tôi đã vẽ chính xácmất đào tạo và xác nhận:

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() 

Bây giờ tôi muốn thêm và cốt truyện của độ chính xác của bộ thử nghiệm từ model.test_on_batch(x_test, y_test), nhưng từ model.metrics_names Tôi nhận được cùng một giá trị 'acc' được sử dụng để vẽ chính xác trên dữ liệu đào tạo plt.plot(history.history['acc']). Làm thế nào tôi có thể âm mưu chính xác của bộ thử nghiệm?

Trả lời

3

Điều này cũng giống nhau vì bạn đang tập luyện trên tập kiểm tra chứ không phải tập huấn luyện. Đừng làm điều đó, chỉ cần đào tạo về tập huấn luyện:

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

Đổi thành:

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

Tôi xin lỗi, tôi đào tạo luôn luôn đã sử dụng thiết lập để đào tạo NN, nó được một giám sát. Tôi mới học máy, và tôi hơi bối rối về kết quả của 'model.fit (...)', tôi nhận _loss_, _acc_, _val__loss_ và _val__acc_, tôi giả sử rằng các giá trị đại diện cho sự mất mát và chính xác về đào tạo và xác thực , nhưng tôi có thể tìm thấy giá trị mất mát về thử nghiệm ở đâu? – Simone

+0

@Simone Bạn có thể sử dụng model.evaluate trên tập kiểm tra để nhận được số liệu và số liệu mất trên tập kiểm tra. Chỉ cần đảm bảo bạn sử dụng đúng biến. –

+0

Tôi đã sử dụng _model.evaluete_ và tôi nhận được _accuracy_ và _loss_, nhưng tôi không thể vẽ chúng vì tôi không thể phân biệt _accuracy_ thu được khi đào tạo, từ _accuracy_ thu được khi kiểm tra. – Simone

Các vấn đề liên quan