Việc đào tạo mô hình perceptron tương tự như mô hình hồi quy tuyến tính. Chúng tôi khởi tạo mô hình thần kinh của mình, mô hình này có hai nút đầu vào trong lớp đầu vào và một nút đầu ra duy nhất có chức năng kích hoạt sigmoid. Khi chúng tôi vẽ mô hình của mình với dữ liệu, chúng tôi nhận thấy rằng nó không phù hợp với dữ liệu của chúng tôi. Chúng ta cần huấn luyện mô hình này để mô hình có các thông số trọng lượng và độ chệch tối ưu và phù hợp với dữ liệu này.
Có các bước sau để đào tạo một mô hình
Bước 1
Chúng ta sử dụng hàm tổn thất entropy chéo nhị phân (BCELoss
) vì mô hình đang xử lý phân loại hai lớp.
Hàm tổn thất này được nhập từ mô-đun torch.nn
:
criterion = nn.BCELoss()
Bước 2
Dùng thuật toán giảm độ dốc ngẫu nhiên (stochastic gradient descent
– SGD) để cập nhật thông số.
Xác định trình tối ưu hóa như sau:
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
Bước 3
Huấn luyện mô hình qua một số kỳ (epochs
).
Trong mỗi kỳ, thực hiện các bước sau:
- Tính toán đầu ra dự đoán (
ypred
) từ mô hình. - Tính toán lỗi (
loss
) sử dụng tiêu chí đã định trước. - Hiển thị thông tin về kỳ đào tạo và giá trị lỗi.
- Lưu giá trị lỗi vào danh sách để phân tích sau này.
- Đặt gradient về zero trước khi tính đạo hàm.
- Tính đạo hàm (gradient) của lỗi.
- Cập nhật các thông số mô hình.
epochs = 1000 losses = [] for i in range(epochs): ypred = model.forward(xdata) loss = criterion(ypred, ydata) print(f"epoch: {i}, loss: {loss.item()}") losses.append(loss) optimizer.zero_grad() loss.backward() optimizer.step()
Bây giờ, cuối cùng chúng ta vẽ biểu đồ mô hình tuyến tính mới của mình bằng cách gọi phương thức plotfit ().
plotfit('Trained Model')