Ở những bài trước, ta đã nghiên cứu những kiến thức cơ bản về cách tạo mô hình bằng cách sử dụng API tuần tự và hàm. Bìa này giải thích về cách biên dịch mô hình. Biên dịch là bước cuối cùng trong việc tạo một mô hình. Sau khi biên dịch xong, ta sẽ chuyển sang giai đoạn huấn luyện mô hình.
Bây giờ cùng tìm hiểu một số khái niệm cần thiết để hiểu rõ hơn về quá trình biên dịch.
Nội dung
1. Loss
Trong học máy, hàm Loss được sử dụng để tìm lỗi hoặc sai lệch trong quá trình học. Keras yêu cầu hàm mất trong quá trình biên dịch mô hình.
Keras cung cấp khá nhiều hàm loss trong mô-đun tổn thất như sau
- mean_squared_error
- mean_absolute_error
- mean_absolute_percentage_error
- mean_squared_logarithmic_error
- squared_hinge
- hinge
- categorical_hinge
- logcosh
- huber_loss
- categorical_crossentropy
- sparse_categorical_crossentropy
- binary_crossentropy
- kullback_leibler_divergence
- poisson
- cosine_proximity
- is_categorical_crossentropy
Tất cả hàm loss chấp nhận 2 đối số :
- y_true − true labels như tensors
- y_pred − dự đoán cùng shape như y_true
Import mô hình mất mát trước khi sử dụng hàm mất mát như sau
from keras import losses
2. Optimizer (Tối ưu)
Trong học máy, Tối ưu hóa là một quá trình quan trọng nhằm tối ưu các trọng số đầu vào bằng cách so sánh dự đoán và hàm mất mát. Keras cung cấp khá nhiều trình tối ưu hóa dưới dạng mô-đun, các trình tối ưu hóa và chúng như sau:
SGD – Trình tối ưu hóa dốc xuống dốc ngẫu nhiên.
keras.optimizers.SGD(learning_rate = 0.01, momentum = 0.0, nesterov = False)
RMSprop
keras.optimizers.RMSprop(learning_rate = 0.001, rho = 0.9)
Adagrad
keras.optimizers.Adagrad(learning_rate = 0.01)
Adadelta
keras.optimizers.Adadelta(learning_rate = 1.0, rho = 0.95)
Adam
keras.optimizers.Adam(
learning_rate = 0.001, beta_1 = 0.9, beta_2 = 0.999, amsgrad = False
)
Adamax
keras.optimizers.Adamax(learning_rate = 0.002, beta_1 = 0.9, beta_2 = 0.999)
Nadam
keras.optimizers.Nadam(learning_rate = 0.002, beta_1 = 0.9, beta_2 = 0.999)
import module optimizers trước khi sử dụng nó
from keras import optimizers
3. Metrics
Trong học máy, Chỉ số được sử dụng để đánh giá hiệu suất của mô hình . Nó tương tự như hàm mất mát, nhưng không được sử dụng trong quá trình đào tạo. Keras cung cấp khá nhiều số liệu dưới dạng mô-đun, số liệu và chúng như sau
- accuracy
- binary_accuracy
- categorical_accuracy
- sparse_categorical_accuracy
- top_k_categorical_accuracy
- sparse_top_k_categorical_accuracy
- cosine_proximity
- clone_metric
Tương tự như hàm mất mát, số liệu cũng chấp nhận hai đối số dưới đây:
- y_true − true labels như tensors
- y_pred − dự đoán với hình dạng giống như y_true
from keras import metrics
4. Biên dịch mô hình
Mô hình Keras cung cấp phương thức, compile () để biên dịch mô hình. Đối số và giá trị mặc định của phương thức compile () như sau
compile(
optimizer,
loss = None,
metrics = None,
loss_weights = None,
sample_weight_mode = None,
weighted_metrics = None,
target_tensors = None
)
Các đối số quan trọng sau đây :
- loss function
- Optimizer
- metrics
Ví dụ :
from keras import losses
from keras import optimizers
from keras import metrics
model.compile(loss = 'mean_squared_error',
optimizer = 'sgd', metrics = [metrics.categorical_accuracy])
Trong đó :
- loss function được đặt là mean_squared_error
- optimizer được đặt là sgd
- metrics được đặt là metrics.categorical_accuracy
5. Huấn luyện mô hình
Các mô hình được đào tạo bởi mảng NumPy bằng cách sử dụng fit (). Mục đích chính của hàm này được sử dụng để đánh giá mô hình của bạn khi đào tạo. Điều này cũng có thể được sử dụng để vẽ đồ thị hiệu suất mô hình
model.fit(X, y, epochs = , batch_size = )
Trong đó :
- X, y − bộ để đánh giá dữ liệu
- epochs − không cần đánh giá mô hình trong quá trình đào tạo
- batch_size − Các phiên bản huấn luyện mô hình.
Ví dụ đơn giản về dữ liệu ngẫu nhiên numpy để sử dụng khái niệm này.
a. Tạo dữ liệu
Tạo một dữ liệu ngẫu nhiên bằng cách sử dụng numpy cho x và y như sau :
import numpy as np
x_train = np.random.random((100,4,8))
y_train = np.random.random((100,10))
tạo dữ liệu validation ngẫu nhiên,
x_val = np.random.random((100,4,8))
y_val = np.random.random((100,10))
b. Tạo model
Tạo mô hình tuần tự đơn giản
from keras.models import Sequential model = Sequential()
c. Thêm layers
Tạo layers thêm vào model
from keras.layers import LSTM, Dense
# add a sequence of vectors of dimension 16
model.add(LSTM(16, return_sequences = True))
model.add(Dense(10, activation = 'softmax'))
d. Biên dịch model
model.compile(
loss = 'categorical_crossentropy', optimizer = 'sgd', metrics = ['accuracy']
)
e. Apply fit()
Sử dụng hàm fit() để huấn luyện dữ liệu :
model.fit(x_train, y_train, batch_size = 32, epochs = 5, validation_data = (x_val, y_val))