Professional Documents
Culture Documents
Bài 8: Pytorch
- Biến X, y được gán bằng giá trị tương ứng với key 'X' và key 'y' trong biến data.
- Hàm ravel() được sử dụng để biến đổi ma trận thành một mảng một chiều (1D array),
giúp tiện lợi cho việc xử lý dữ liệu trong các bước tiếp theo.
- num_img :danh sách chứa các chỉ số của các ảnh muốn hiển thị.
fig, axes = plt.subplots(1, len(num_img), figsize=(10, 2)): tạo ra một hình vẽ với một
hàng và số lượng cột bằng với độ dài của danh sách num_img. Kích thước của hình vẽ
là 10x2 inches.
- Trong vòng lặp for: enumerate(num_img) được sử dụng để lặp qua từng chỉ số và
giá trị của num_img. Biến idx chứa chỉ số của ảnh trong tập dữ liệu X, từ đó bạn truy
cập vào ảnh tương ứng trong X[idx].
- Chia dữ liệu thành 70% train, 30% test (train_test_split) đảm bảo tính ngẫu nhiên
và đồng đều về nhãn.
- Chia dữ liệu train thành 90% train, 10% val (train_test_split) đảm bảo tính ngẫu
nhiên và đồng đều về nhãn.
- np.where(y_train == 10, 0, y_train): Đây là một cách để chuyển nhãn của lớp 10
thành 0, để đảm bảo rằng nhãn đầu ra các số không bị lộn nhãn với nhau .
- to_categorical: Hàm chuyển đổi một vector nhãn thành ma trận one-hot encoding.
model = NeuralNetwork()
criterion = nn.BCELoss()
optimizer = optim.SGD(model.parameters(), lr=1)
# Validation
model.eval()
running_val_loss = 0.0
with torch.no_grad():
for inputs, labels in val_loader:
outputs = model(inputs)
outputs = torch.sigmoid(outputs)
loss = criterion(outputs, labels.float())
running_val_loss += loss.item() * inputs.size(0)
val_loss = running_val_loss / len(val_loader.dataset)
val_losses.append(val_loss)
- Biểu đồ loss của train và validation