print( 'Epoch [%d/%d], train_loss: %.4f, train_acc: %.4f, epoch_time: %.4f, Val_Loss: %.4f, Val_acc: %.4f, val_time: %.4f s, max_train_acc: %.4f, max_valid_acc: %.4f' % (epoch + 1, config.num_epochs, train_loss_sum / len(dst_train), train_acc, epoch_time * 60, val_loss, val_acc, val_time * 60, max_acc[0], max_acc[1]))
时间: 2024-04-15 14:25:30 浏览: 43
这段代码用于打印训练过程中的一些指标,包括当前的训练损失(`train_loss`)、训练准确率(`train_acc`)、当前的训练周期(`epoch`)、总的训练周期数(`config.num_epochs`)、当前周期的训练时间(`epoch_time`)、验证集损失(`val_loss`)、验证集准确率(`val_acc`)、验证时间(`val_time`)、历史上的最大训练准确率(`max_acc[0]`)和历史上的最大验证准确率(`max_acc[1]`)。
通过使用字符串格式化,将这些值插入到打印语句中相应的位置。其中,`%.4f`表示保留四位小数的浮点数格式。
相关问题
for epoch in range(100): train_loss, train_acc = train(model, train_loader, criterion, optimizer) test_loss, test_acc = test(model, test_loader, criterion) print('Epoch: {} Train Loss: {:.4f} Train Acc: {:.4f} Test Loss: {:.4f} Test Acc: {:.4f}'.format( epoch, train_loss, train_acc, test_loss, test_acc)) 将损失函数可视化
要将损失函数可视化,可以使用 Matplotlib 库。在上面提供的训练代码中,每一轮 epoch 结束后记录了训练集和测试集的 loss 值。我们可以将这些值存储在一个数组中,然后使用 Matplotlib 将其可视化。
以下是一个简单的示例代码:
```python
import matplotlib.pyplot as plt
train_losses = []
test_losses = []
for epoch in range(100):
train_loss, train_acc = train(model, train_loader, criterion, optimizer)
test_loss, test_acc = test(model, test_loader, criterion)
train_losses.append(train_loss)
test_losses.append(test_loss)
print('Epoch: {} Train Loss: {:.4f} Train Acc: {:.4f} Test Loss: {:.4f} Test Acc: {:.4f}'.format(
epoch, train_loss, train_acc, test_loss, test_acc))
plt.plot(train_losses, label='Training loss')
plt.plot(test_losses, label='Validation loss')
plt.legend(frameon=False)
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.show()
```
这段代码将训练集和测试集的 loss 值分别存储在 `train_losses` 和 `test_losses` 数组中。然后使用 `plt.plot()` 函数将其可视化。最后使用 `plt.xlabel()` 和 `plt.ylabel()` 函数添加轴标签,并使用 `plt.legend()` 函数添加图例。
import matplotlib.pyplot as plt train_losses, train_accs, test_losses, test_accs = [], [], [], [] for epoch in range(100): train_loss, train_acc = train(model, train_loader, criterion, optimizer) test_loss, test_acc = test(model, test_loader, criterion) train_losses.append(train_loss) train_accs.append(train_acc) test_losses.append(test_loss) test_accs.append(test_acc) print('Epoch: {} Train Loss: {:.4f} Train Acc: {:.4f} Test Loss: {:.4f} Test Acc: {:.4f}'.format( epoch, train_loss, train_acc, test_loss, test_acc)) # 绘制损失函数曲线 plt.plot(train_losses, label='Train Loss') plt.plot(test_losses, label='Test Loss') plt.legend() plt.show() # 绘制准确率曲线 plt.plot(train_accs, label='Train Acc') plt.plot(test_accs, label='Test Acc') plt.legend() plt.show() 图像纵坐标设置为0~1
可以通过设置y轴的范围来将图像纵坐标设置为0~1。可以使用`ylim()`函数设置y轴的范围,例如:
``` python
# 绘制损失函数曲线
plt.plot(train_losses, label='Train Loss')
plt.plot(test_losses, label='Test Loss')
plt.ylim([0, 1]) # 设置y轴范围为0~1
plt.legend()
plt.show()
# 绘制准确率曲线
plt.plot(train_accs, label='Train Acc')
plt.plot(test_accs, label='Test Acc')
plt.ylim([0, 1]) # 设置y轴范围为0~1
plt.legend()
plt.show()
```
在这段代码中,`ylim()`函数被用于设置y轴的范围为0~1。这样,损失函数和准确率的图表纵坐标的范围就被限制在了0~1之间。