概述
在卷积神经网络中,有时候为了更直观的看出损失函数(Loss Function)的变化,需要用曲线的形式来展现。如何在一张图中将train和test的Loss变化全部显示出来?
首先,先导入pyplot绘图库:
import matplotlib.pyplot as plt
然后,定义两个全局的列表变量,用于之后存储train和test的Loss值:
arry_train = []
arry_test = []
再编写绘图的函数,这里的batch_size和epoch根据自己的代码进行修改:
def plot_loss(arry_train,arry_test):
line1, = plt.plot(range(0,len(arry_train)),arry_train,'r.-')
line2, = plt.plot(range(0,len(arry_test)),arry_test,'b.-')
plt_title = 'BATCH_SIZE = 256;EPOCH = 20'
plt.title(plt_title)
plt.legend(handles=[line1, line2], labels=["train_loss", "test_loss"], loc="upper right", fontsize=7)
plt.ylabel('LOSS')
plt.show()
编写完功能函数后,可以在train函数和test函数中用append()方法向两个列表中添加损失:
def train(dataloader, model, loss_func, optimizer, epoch):
...
arry_train.append(loss)
def test(dataloader, model, loss_fn):
...
arry_test.append(test_loss)
最后在main函数总调用该功能函数:
if __name__ == '__main__':
for epoch in range(start_epoch, start_epoch + epoches):
train(train_dataloader, model, loss_func, optimizer, epoch)
test(test_dataloader, model, loss_func)
# Save models
torch.save(model.state_dict(), 'model.pth')
print('Saved PyTorch LeNet5 State to model.pth')
plot_loss(arry_train, arry_test)
运行后,就会在同一张图中看到不同Loss的变化:
最后
以上就是殷勤咖啡为你收集整理的在pycharm中用曲线显示Loss的变化的全部内容,希望文章能够帮你解决在pycharm中用曲线显示Loss的变化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复