在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的变化:

在pycharm中用曲线显示Loss的变化_第1张图片

 

你可能感兴趣的:(卷积神经网络,深度学习,人工智能,python)