大多数github上的神经网络模型都会包括一些必要的记录模块,为了更好的观察训练过程,记录也确实是很有必要的,主要的记录训练过程的方法包含两种,分别是利用logging和SummaryWriter,一个是将训练过程中的一些设置信息打印出来,一般是同时打印到log文件和控制台上的。SummaryWriter一般是用来记录训练过程中的学习率和损失函数的变化,通过命令行可以得到一个网址,查看起来也很方便
import logging
if __name__ == "__main__":
#创建一个logger,输入参数为Logger的名称,自己拟定
logger = logging.getLogger("logger_test")
#设置logger的等级,等级有DEBUG < INFO < WARNING < ERROR < CRITICAL
#默认为WARNING等级,当打印的信息的等级再WARNING和其上的时候才记录
logger.setLevel(logging.INFO)
#logger打印信息的格式,时间 等级 打印内容,也可在这里设置logger等级,不设置的话只会打印message
logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s')
#创建handle,log_file为写入文件的名称,log文件
#对于handle同样需要设置对应的输出格式和等级
file_handler = logging.FileHandler(log_file, 'w')
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
file_handler.setLevel(logging.INFO)
#将handle添加进logger,这样logger在控制台打印信息的同时还会将信息打印到txt文件中去
logger.addHandler(file_handler)
from torch.utils.tensorboard import SummaryWriter
#创建,三种方式
#默认创建方式,会将文件保存在下面的文件夹中,文件夹的名称会根据系统时间和用户名自动生成
writer = SummaryWriter()
# folder location: runs/May04_22-14-54_s-MacBook-Pro.local/
#自己指定保存文件夹
# create a summary writer using the specified folder name.
writer = SummaryWriter("my_experiment")
# folder location: my_experiment
#在文件夹后面添加后缀
# create a summary writer with comment appended.
writer = SummaryWriter(comment="LR_0.1_BATCH_16")
# folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/
#将数据添加到event中去
#使用writer.add_scalar()添加,其中tag为数据的名称,scalar_value为y值,global_step为x值
x = range(100)
for i in x:
#writer.add_scalar(tag='y=2x', scalar_value=i * 2, global_step=i)
writer.add_scalar('y=2x', i * 2, i)
writer.close()
#最后是访问,激活python环境,运行下面代码,会得到一个网址,打开网址就可以看到图表了
tensorboard --logdir=事件文件所在的文件夹名