本文重点
我们希望训练的时候损失函数是降低的,一种好的办法就是通过画图的方式来将其可视化,这样效果比较好,其实这个很简单,只需要在训练过程中将训练损失和测试损失存储下来,然后使用matplotlib来绘图。
绘图核心代码
train_losses.append(train_loss/len(train_data))#将训练损失添加到训练损失列表 valid_losses.append(valid_loss/len(test_data))#将测试损失添加到测试损失列表
plt.plot(train_losses, label='train')#绘图
plt.plot(valid_losses, label='valid')
plt.xlabel('epoch')
plt.legend(loc='best')
plt.show()
实例
我们可视化一下CNN完成手写字体识别的损失图像是什么样的:
代码为:
代码分析
需要导入的包
import numpy as np
from torchvision.datasets import mnist
from torch.utils.data import DataLoader
from torch import nn
import torch
import matplotlib.pyplot as plt
from torchvision import transforms
from datetime import datetime
加载数据集
train_set =mnist.MNIST('./adata',train=True,transform=data_tf,download=True)
test_set =mnist.MNIST('./adata',train=False,transform=data_tf,download=True) train_data=DataLoader(train_set,batch_size=64,shuffle=True)
test_data =DataLoader(test_set,batch_size=128,shuffle=True)
设置手动调整学习率
def set_learning_rate(optimizer,lr):#手动调整学习率
for param_group in optimizer.param_groups:
param_group['lr']=lr