PyTorch下的可视化工具( 二 )


结果:
test_data_x.shape: torch.Size([10000, 1, 28, 28]) test_data_y.shape: torch.Size([10000]) torch.Size([128, 1, 28, 28]) torch.Size([128])2.1 通过tensorboardX可视化训练过程
tensorboard是谷歌开发的深度学习框架TensorFlow的一套深度学习可视化神器,在pytorch团队的努力下,他们开发出了tensorboardX来让pytorch的玩家也能享受tensorboard的福利 。
先安装相关的库:
pip install tensorboardX pip install tensorboard
并将tensorboard.exe所在的文件夹路径加入环境变量path中(比如我的tensorboard.exe的路径为D:Python/ target=_blank class=infotextkey>Python376Scriptstensorboard.exe,那么就在path中加入D:Python376Scripts)
下面是tensorboardX的使用过程 。基本使用为,先通过tensorboardX下的SummaryWriter类获取一个日志编写器对象 。然后通过这个对象的一组方法往日志中添加事件,即生成相应的图片,最后启动前端服务器,在localhost中就可以看到最终的结果了 。
训练网络,并可视化网络训练过程的代码如下:
from tensorboardX import SummaryWriter logger = SummaryWriter(log_dir="data/log") # 获取优化器和损失函数 optimizer = torch.optim.Adam(MyConvNet.parameters(), lr=3e-4) loss_func = nn.CrossEntropyLoss() log_step_interval = 100 # 记录的步数间隔 for epoch in range(5): print("epoch:", epoch) # 每一轮都遍历一遍数据加载器 for step, (x, y) in enumerate(train_loader): # 前向计算->计算损失函数->(从损失函数)反向传播->更新网络 predict = MyConvNet(x) loss = loss_func(predict, y) optimizer.zero_grad() # 清空梯度(可以不写) loss.backward() # 反向传播计算梯度 optimizer.step() # 更新网络 global_iter_num = epoch * len(train_loader) + step + 1 # 计算当前是从训练开始时的第几步(全局迭代次数) if global_iter_num % log_step_interval == 0: # 控制台输出一下 print("global_step:{}, loss:{:.2}".format(global_iter_num, loss.item())) # 添加的第一条日志:损失函数-全局迭代次数 logger.add_scalar("train loss", loss.item() ,global_step=global_iter_num) # 在测试集上预测并计算正确率 test_predict = MyConvNet(test_data_x) _, predict_idx = torch.max(test_predict, 1) # 计算softmax后的最大值的索引,即预测结果 acc = accuracy_score(test_data_y, predict_idx) # 添加第二条日志:正确率-全局迭代次数 logger.add_scalar("test accuary", acc.item(), global_step=global_iter_num) # 添加第三条日志:这个batch下的128张图像 img = vutils.make_grid(x, nrow=12) logger.add_image("train image sample", img, global_step=global_iter_num) # 添加第三条日志:网络中的参数分布直方图 for name, param in MyConvNet.named_parameters(): logger.add_histogram(name, param.data.numpy(), global_step=global_iter_num)
运行完后,我们通过cmd来到与代码同一级的目录(如果你使用的是pycharm,可以通过pycharm中的终端)输入指令tensorboard --logdir="./data/log",启动服务器 。

PyTorch下的可视化工具

文章插图
 
 
logdir后面的参数是日志文件的文件夹的路径
 
然后在谷歌浏览器中访问红框框中的url,便可得到可视化界面,点击上面的页面控件,可以查看我们通过add_scalar、add_image和add_histogram得到的图像,而且各方面做得都很丝滑 。
PyTorch下的可视化工具

文章插图
 
PyTorch下的可视化工具

文章插图
 
PyTorch下的可视化工具

文章插图
 
 
以下是笔者安装使用tensorboard时遇到的一些错误 。
 
好,作为一名没有装过TensorFlow的windows玩家,笔者下面开始踩坑 。踩完后,直接把几个可能的错误呈上 。
第一个错误,运行tensorboard --logdir="./data/log",遇到报错,内容为有重复的tensorboard的包 。
解决方法:找到site-packages(如果你是像我一样全局安装的,那么找到解释器那一级目录的site-packages,如果是在项目虚拟环境中安装的,那么找到项目中的site-packages),删去下图中红框框标出来的文件夹 。


推荐阅读