pytorch用tensorboard实时生成loss图像
解决错误
错误代码
No module named ‘tensorboard‘
解决方式
进入虚拟环境依次输入以下指令
conda update pytorch torchvision
pip install tensorboard
如何开始
写代码
- 打开训练的py文件
- 顶部导入库
from torch.utils.tensorboard import SummaryWriter
- 在训练的代码的epoch外面写下面的代码
(log_dir是保存loss的位置,如果位置不存在会自动创建)
(flush_secs=20是每20秒保存一次)
writer = SummaryWriter(log_dir='runs/result',flush_secs=20)
- 在输出loss的语句下面写
(epoch*len(train_dataloader)+i就是输出图像的横坐标,epoch是什么都懂,train_dataloader就是训练用的dataloader的实例对象,i就是索引)
writer.add_scalar('Train/Loss', loss.item(), epoch*len(train_dataloader)+i)
- 打开anaconda prompt,切换到有pytorch的虚拟环境,再用cd切换到保存tensorboard文件的绝对路径位置
- 输入以下命令
tensorboard --logdir=./
- 复制在黑框里出现的url在浏览器打开
- 此时已经进入tensorboard但是它不会自动刷新图像,点击右上角的齿轮,把Reload data打勾,再把Reload period改成30就可以了!
for ??? in enumerate(?)的作用
for x,y in enumerate(数组):
print(x,y)
输出的x是数组值的下标
输出的y是数组的值
关于Visdom的说明
和tensorboard用法类似
- 先用vis = Visualizer(env="")
- 然后用vis.plot_many_stack()