在pycharm中用曲线显示Loss的变化

        在卷积神经网络中,有时候为了更直观的看出损失函数(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的变化:

 

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值