有了dataloader之后,需要从loader中一个一个取出批次和相应label,进行模型训练或者测试。但在正式训练之前,最好先试运行一下,看看自己写的神经网络实例化之后有没有什么bug。
以下为练过程试运行的代码
# 实例化模型
model = SimpleBinaryClassificationModel()
# 定义损失函数和优化器
criterion = nn.BCELoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)
# 取出第一个批次的数据
first_batch = next(iter(dataloader))
inputs, labels = first_batch
# 转换为适当的设备(可选)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
inputs, labels = inputs.to(device), labels.to(device)
# 将模型切换成训练模式
model.train()
# 前向传播
outputs = model(inputs) # 在这里可以修改定义模型类的代码,输出中间过程
print("Outputs:", outputs)
# 计算损失
loss = criterion(outputs, labels.unsqueeze(1))
# loss是一个tensor类型的标量,用loss.item()转换为浮点数
print("Loss:", loss.item())
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
在使用以上代码调试好一个批次后,接下来就可以使用enumerate迭代器和for循环多个epoch来训练模型了