Việc đào tạo mô hình được thực hiện trong một lệnh gọi phương thức duy nhất được gọi là phù hợp, nhận một vài tham số như được thấy trong mã bên dưới
history = model.fit(X_train, Y_train,
batch_size=128, epochs=20,
verbose=2,
validation_data=(X_test, Y_test)))
Hai tham số đầu tiên của phương thức phù hợp chỉ định các tính năng và đầu ra của tập dữ liệu huấn luyện.
Kỷ nguyên được đặt thành 20; chúng tôi giả định rằng quá trình đào tạo sẽ hội tụ trong tối đa 20 kỷ nguyên – các lần lặp lại. Mô hình được đào tạo được xác thực trên dữ liệu thử nghiệm như được chỉ định trong tham số cuối cùng. Đầu ra một phần của việc chạy lệnh trên được hiển thị ở đây
Train on 60000 samples, validate on 10000 samples
Epoch 1/20
- 9s - loss: 0.2488 - acc: 0.9252 - val_loss: 0.1059 - val_acc: 0.9665
Epoch 2/20
- 9s - loss: 0.1004 - acc: 0.9688 - val_loss: 0.0850 - val_acc: 0.9715
Epoch 3/20
- 9s - loss: 0.0723 - acc: 0.9773 - val_loss: 0.0717 - val_acc: 0.9765
Epoch 4/20
- 9s - loss: 0.0532 - acc: 0.9826 - val_loss: 0.0665 - val_acc: 0.9795
Epoch 5/20
- 9s - loss: 0.0457 - acc: 0.9856 - val_loss: 0.0695 - val_acc: 0.9792
Ảnh chụp màn hình của đầu ra được đưa ra bên dưới để bạn tham khảo nhanh
Đá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 phương thức đánh giá 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 phương thức đánh giá như sau –
loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)
Chúng tôi sẽ in tổn thất và độ chính xác bằ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 đầu ra sau – Test Loss 0.08041584826191042Test 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 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ẽ các số liệu về độ chính xác và tổn thất để xem mô hình hoạt động như thế nào trên dữ liệu thử nghiệm.
Vẽ sơ đồ số liệu chính xác
Chúng tôi sử dụng lịch sử được ghi lại trong quá trình đào tạo của mình để có được biểu đồ về số liệu chính xác. Đoạn mã sau sẽ vẽ độ chính xác trên mỗi kỷ nguyên. Chúng tôi chọn độ 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 sơ đồ, độ chính xác tăng nhanh trong hai kỷ nguyên đầu tiên, cho thấy 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 hơn nữa. 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 thừa. Nó chỉ ra rằng mô hình đang bắt đầu ghi nhớ dữ liệu.
Chúng tôi cũng sẽ vẽ các chỉ số tổn thất để kiểm tra hiệu suất của mô hình.
Sơ đồ 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 huấn luyện (“tổn thất”) và thử nghiệm (“val_loss”). Điều này được thực hiện bằng cách sử dụng đoạn 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 sơ đồ, 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 kiểm tra, tổn thất không giảm cùng tốc độ với tập huấn luyện, nhưng hầu như không thay đổ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 khái quát tốt cho dữ liệu chưa 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 mình.
xem thêm : Dự đoán về dữ liệu thử nghiệm