TensorBoard是Tensorflow附带的神经网络可视化分析工具,其功能十分强大。作为Pytorch用户,很幸运Tensorboard同样支持PyTorch。这里给出个人最近使用Tensorboard时的一些经验。
1.14版本之后的Pytorch内已经有Tensorboard接口,但是仍然需要我们手动安装Tensorboard才可以调用:
pip install tensorboard
Residual Block示例
我们以残差网络模块为示例演示Tensorboard可视化工具,我的主要目的是为了观察验证复杂神经网络的结构,下文主要展示网络结构的可视化功能:
class Residual(nn.Module): def __init__(self, ins, outs): super(Residual, self).__init__() # 卷积模块 inner = int(outs / 2) self.convBlock = nn.Sequential( nn.BatchNorm2d(ins), nn.ReLU(inplace=True), nn.Conv2d(ins, inner, 1), nn.BatchNorm2d(inner), nn.ReLU(inplace=True), nn.Conv2d(inner, inner, 3, 1, 1), nn.BatchNorm2d(inner), nn.ReLU(inplace=True), nn.Conv2d(inner, outs, 1) ) if ins != outs: self.skipConv = nn.Conv2d(ins, outs, 1) self.ins = ins self.outs = outs def forward(self, x): residual = x x = self.convBlock(x) if self.ins != self.outs: residual = self.skipConv(residual) x += residual return x
构建残差网络之后,我们以输入三通道输出12通道的残差结构为例,给定随机输入dummy_input,
import osfrom torch.utils.tensorboard import SummaryWriter# SummaryWriter 内部的路径path = os.getcwd()+'uns'writer = SummaryWriter(path+'experiment1')t = Residual(3,12)dummy_input = torch.randn(10, 3, 128, 128)writer.add_graph(t, dummy_input)
利用Tensorboard进行可视化
Tensorboard需要我们从命令行另外调用,
tensorboard --logdir=path
注意这里的path需要和你上步中summarywriter的路径path保持一致。
Ps:这里的步骤是在windows平台下完成的,记得在命令行内输入上述命令是不要加双引号。随后利用自带浏览器打开 (http://localhost:6006/)需要注意,如果chrome浏览器版本过低(<60)可能会出现错误。
Tensorboard一览
进入Tensorboard之后就可以看到可视化的网络结构,双击可以放大子模块,可以看到更清晰的残差结构。
求关注点赞评论呀~