利用visdom显示卷积层结果
程序员文章站
2022-04-30 22:50:02
...
输入卷积神经网络的图像:
中间各个卷积层输出的featuremap可视化结果:
代码:
vis = visdom.Visdom()
for layer_name, fmap_list in fmap_dict.items(): # 通过给各卷积层注册register_forward_hook函数来保存各卷积层featuremap
fmap = fmap_list[0] # shape : (1, 64, 55, 55), batch维度恒为1
fmap.transpose_(0, 1) # 将64通道逐通道的显示
fmap[:, 0, :, :] *= 10 # 提高对比度,因为卷积的结果是直接做像素值的,因此可能会出现整体数值偏小的情况;而且visdom没有tensorboard中滑动调节对比度的滑动调节栏;此外这里就算乘法的结果大于255,也不会报错,就会按照255来计算
nrow = int(np.sqrt(fmap.shape[0])) # 将所有的图片放在nrow * nrow的网格中显示
vis.images(fmap, nrow=nrow, win=layer_name)