怎么用pandas记录训练数据
参考资料:之前借鉴过的代码
pandas是python中用于数据处理的一个很方便的包,一般我们希望在训练的时候将相关的训练数据记录在一个csv文件中,这样能方便我们监控实验进程,效果如下所示:
那么该如何完成这一需求?两种办法:
1. 新建链表保存数据,整个存入csv文件
import pandas as pd result_loss = [] result_psnr = [] for ... """ 训练过程 """ result_loss.append(loss.item()) result_psnr.append(psnr.item()) if(i%n_save==0): out_path = './statistics/' data_frame = pd.DataFrame( data={'Loss': result_loss, 'PSNR': result_psnr}, index=range(1, i + 1)) data_frame.to_csv(out_path + args.expname + '_train_results.csv', index_label='Epoch')
这种方法的思路很直接,新建列表保存训练中数值,然后每隔若干epochs便重新写入完成的csv。
2. 在已有的csv文件后append新数据
和上面的写法类似,只是我们可以不用始终维持一个大的列表,并且写入模式要设置为append。
import pandas as pd result_loss = [] result_psnr = [] out_path = './statistics/' data_frame = pd.DataFrame( data={'Loss': result_loss, 'PSNR': result_psnr}) data_frame.to_csv(out_path + args.expname + '_train_results.csv', index_label='Epoch') for ... """ 训练过程 """ result_loss.append(loss.item()) result_psnr.append(psnr.item()) if(i%n_save==0): out_path = './statistics/' data_frame = pd.DataFrame( data={'Loss': result_loss, 'PSNR': result_psnr}, index=range(1, i + 1)) data_frame.to_csv(out_path + args.expname + '_train_results.csv',mode='a', index=False, header=False) result_loss = [] result_psnr = []
append的代码我没有测试过,不过思路大致是这样的。