Chào mừng các bạn quay trở lại với loạt bài về Keras Cơ Bản của tek4.vn. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về cách vẽ đồ thị đường cong học tập của mô hình học sâu. Bắt đầu thôi!
Xem thêm bài viết trước: Cách Visualize Một Mô Hình Học Sâu
Đường cong học tập là một biểu đồ về hiệu suất của mô hình mạng nơ ron theo thời gian, chẳng hạn như được tính toán vào cuối mỗi epoch đào tạo.
Các đồ thị đường cong học tập cung cấp cái nhìn sâu sắc về động lực học tập của mô hình, chẳng hạn như liệu mô hình có đang học tốt hay không, liệu nó có underfitting với tập dữ liệu đào tạo hay không hoặc nó có overfitting với tập dữ liệu đào tạo hay không.
Bạn có thể dễ dàng tạo đường cong học tập cho các mô hình học sâu của mình.
Trước tiên, bạn phải cập nhật lệnh gọi của mình thành hàm fit để bao gồm tham chiếu đến tập dữ liệu xác thực. Tập xác thực là một phần của tập huấn luyện không được sử dụng để đào tạo mô hình mà thay vào đó được sử dụng để đánh giá hiệu suất của mô hình trong quá trình huấn luyện.
Bạn có thể chia nhỏ dữ liệu theo cách thủ công và chỉ định đối số validation_data hoặc bạn có thể sử dụng đối số validation_split và chỉ định phần trăm phân chia của tập dữ liệu đào tạo và để API thực hiện phân tách cho bạn.
Hàm fit sẽ trả về đối tượng history có chứa dấu vết của các chỉ số hiệu suất được ghi lại ở cuối mỗi epoch đào tạo. Điều này bao gồm hàm mất mát đã chọn và từng chỉ số được định cấu hình, chẳng hạn như độ chính xác, mất mát và chỉ số được tính toán cho tập dữ liệu đào tạo và xác thực.
Đường cong học tập là một biểu đồ của sự mất mát trên tập dữ liệu đào tạo và tập dữ liệu xác thực.
Chúng ta có thể vẽ được đường cong học tập từ đối tượng history bằng thư viện Matplotlib .
Ví dụ dưới đây phù hợp với một mạng nơ ron nhỏ trong bài toán phân loại nhị phân tổng hợp. Phân chia tập xác thực là 30 phần trăm được sử dụng để đánh giá mô hình trong quá trình đào tạo và cross-entropy loss trên tập dữ liệu xác thực và đào tạo sau đó được vẽ đồ thị bằng cách sử dụng một biểu đồ đường.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# example of plotting learning curves from sklearn.datasets import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.optimizers import SGD from matplotlib import pyplot # create the dataset X, y = make_classification(n_samples=1000, n_classes=2, random_state=1) # determine the number of input features n_features = X.shape[1] # define model model = Sequential() model.add(Dense(10, activation='relu', kernel_initializer='he_normal', input_shape=(n_features,))) model.add(Dense(1, activation='sigmoid')) # compile the model sgd = SGD(learning_rate=0.001, momentum=0.8) model.compile(optimizer=sgd, loss='binary_crossentropy') # fit the model history = model.fit(X, y, epochs=100, batch_size=32, verbose=0, validation_split=0.3) # plot learning curves pyplot.title('Learning Curves') pyplot.xlabel('Epoch') pyplot.ylabel('Cross Entropy') pyplot.plot(history.history['loss'], label='train') pyplot.plot(history.history['val_loss'], label='val') pyplot.legend() pyplot.show() |
Chạy ví dụ fits với mô hình trên tập dữ liệu. Khi kết thúc quá trình chạy, đối tượng history được trả về và được sử dụng làm cơ sở để tạo biểu đồ đường.
Cross-entropy loss đối với tập dữ liệu đào tạo được truy cập thông qua khóa ‘loss’ và tổn thất trên tập dữ liệu xác thực được truy cập thông qua khóa ‘val_loss‘ trên thuộc tính history của đối tượng history.
Bài viết tiếp theo: Cách lưu và load mô hình