Đánh giá Hiệu suất Mô hình
Để đánh giá hiệu suất của mô hình, chúng tôi gọi evaluate phương pháp như sau -
loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)
Để đánh giá hiệu suất của mô hình, chúng tôi gọi evaluate phương pháp như sau -
loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)
Chúng tôi sẽ in ra sự mất mát và độ chính xác bằng cách sử dụng hai câu lệnh sau:
print("Test Loss", loss_and_metrics[0])
print("Test Accuracy", loss_and_metrics[1])
Khi bạn chạy các câu lệnh trên, bạn sẽ thấy kết quả sau:
Test Loss 0.08041584826191042
Test Accuracy 0.9837
Điều này cho thấy độ chính xác của thử nghiệm là 98%, chúng tôi có thể chấp nhận được. Điều đó có nghĩa là gì đối với chúng tôi rằng trong 2% trường hợp, các chữ số viết tay sẽ không được phân loại chính xác. Chúng tôi cũng sẽ vẽ biểu đồ về độ chính xác và số liệu tổn thất để xem mô hình hoạt động như thế nào trên dữ liệu thử nghiệm.
Các chỉ số về độ chính xác của âm mưu
Chúng tôi sử dụng ghi lại historytrong quá trình đào tạo của chúng tôi để có được sơ đồ về số liệu chính xác. Đoạn mã sau sẽ vẽ biểu đồ độ chính xác trên mỗi kỷ nguyên. Chúng tôi lấy độ chính xác của dữ liệu đào tạo (“acc”) và độ chính xác của dữ liệu xác thực (“val_acc”) để vẽ biểu đồ.
plot.subplot(2,1,1)
plot.plot(history.history['acc'])
plot.plot(history.history['val_acc'])
plot.title('model accuracy')
plot.ylabel('accuracy')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='lower right')
Biểu đồ đầu ra được hiển thị bên dưới -
Như bạn có thể thấy trong biểu đồ, độ chính xác tăng nhanh trong hai kỷ nguyên đầu tiên, cho thấy rằng mạng đang học nhanh. Sau đó, đường cong phẳng hơn cho thấy rằng không cần quá nhiều kỷ nguyên để đào tạo mô hình thêm. Nói chung, nếu độ chính xác của dữ liệu đào tạo (“acc”) tiếp tục được cải thiện trong khi độ chính xác của dữ liệu xác thực (“val_acc”) trở nên tồi tệ hơn, thì bạn đang gặp phải tình trạng trang bị quá mức. Nó chỉ ra rằng mô hình đang bắt đầu ghi nhớ dữ liệu.
Chúng tôi cũng sẽ lập biểu đồ số liệu tổn thất để kiểm tra hiệu suất mô hình của chúng tôi.
Lập đồ thị số liệu tổn thất
Một lần nữa, chúng tôi vẽ biểu đồ tổn thất trên cả dữ liệu đào tạo (“mất mát”) và kiểm tra (“val_loss”). Điều này được thực hiện bằng cách sử dụng mã sau:
plot.subplot(2,1,2)
plot.plot(history.history['loss'])
plot.plot(history.history['val_loss'])
plot.title('model loss')
plot.ylabel('loss')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='upper right')
Đầu ra của mã này được hiển thị bên dưới:
Như bạn có thể thấy trong biểu đồ, tổn thất trên tập huấn luyện giảm nhanh chóng trong hai kỷ nguyên đầu tiên. Đối với tập thử nghiệm, tổn thất không giảm cùng tốc độ với tập huấn luyện, nhưng gần như không đổi trong nhiều kỷ nguyên. Điều này có nghĩa là mô hình của chúng tôi đang tổng quát hóa tốt cho dữ liệu không nhìn thấy.
Bây giờ, chúng tôi sẽ sử dụng mô hình được đào tạo của mình để dự đoán các chữ số trong dữ liệu thử nghiệm của chúng tôi.