Pytorch TensorboardX 可视化

安装tensorboard

1
2
pip install tensorboardX
pip install tensorflow

使用

引入并创建一个SummaryWriter

1
2
3
4
from tensorboardX import SummaryWriter
writer = SummaryWriter('./runs/dogcat1') //log_dir is ./run/dogcat
//need close
writer.close()

logdir参数要是不指定的话,会自动在生成run文件夹。另外还有一个comment参数,用于指定文件名称。

画loss曲线:

1
writer.add_scalar('loss',loss, epoch)

第一个参数为保存参数的名称,第二个参数为Y轴的值,第三个参数为X轴的值

运行该代码后,在log_dir下运行:

1
tensorboard --logdir log_dir  //log_dir 为具体的文件夹

具体为:

1555679643005

结果为:

1555681461022

画激活情况

用于检查深层网络里面的层激活和权值分布情况,避免梯度消失等。

1
2
3
for name, param in net.named_parameters():
writer.add_histogram(
name, param.cpu().clone().data.numpy(), epoch_index)

需要注意的是,如果tensor在gpu需要将其转换到cpu中。

结果为:

1555682223014

画网络结构图

首先先对某个model进行实例化,如net。然后定义一个输入:

1
2
3
4
input = torch.rand(dim1,dim2,dim3,dim4)

net = LeNet()
writer.add_graph(net, input)

同样的,需要注意net要在cpu中。

效果如下:

1555682403877

显示图片

1
writer.add_image('name',image_object)

Projection

使用PCA,T-SNE等方法将高位向量投影到三维坐标系。默认使用PCA,也可以选择T-SNE

1
writer.add_embedding(mat, metadata=None, label_img=None, global_step=None, tag='default', metadata_header=None)
  • mat (torch.Tensor or numpy.array) – A matrix which each row is the feature vector of the data point
  • metadata (list) – A list of labels, each element will be convert to string
  • label_img (torch.Tensor) – Images correspond to each data point
  • global_step (int) – Global step value to record
  • tag (string) – Name for the embedding

参考资料

https://tensorboardx.readthedocs.io/en/latest/tensorboard.html

http://www.pianshen.com/article/3479170564/

https://github.com/pytorch/pytorch/issues/2731