caffe中如何可视化cnn各层的输出
来源:互联网 发布:程序员招聘要求英文 编辑:程序博客网 时间:2024/05/22 15:41
正如caffe的examples所提,CNN model并不是一个黑盒,caffe提供了工具来查看cnn各层的所有输出
1.查看CNN各层的activations值的结构(即每一层的输出)
代码如下:
- 1
- 2
- 3
第i次循环体内部
- layer_name提取的是net的第i层的名称
- blob提取的是net的第i层的输出数据(4d)
结果为:
data (50, 3, 227, 227) 网络的输入,batch_number = 50,图像为227*227*3的RGB图像
conv1 (50, 96, 55, 55) 第一个conv层的输出图像大小为55*55,feature maps个数为96pool1 (50, 96, 27, 27) 第一个pool层的图像尺寸为27*27,feature map个数为96
norm1 (50, 96, 27, 27) 第一个norm层的图像尺寸为27*27,feature map个数为96conv2 (50, 256, 27, 27) 第二个conv层的图像尺寸为27*27,feature map个数为256
pool2 (50, 256, 13, 13) 第二个pool层的图像尺寸为13*13,feature map个数为256
norm2 (50, 256, 13, 13) 第二个norm层的图像尺寸为13*13,feature map个数为256conv3 (50, 384, 13, 13) 第三个conv层的图像尺寸为13*13,feature map个数为384
conv4 (50, 384, 13, 13) 第四个conv层的图像尺寸为13*13,feature map个数为384
conv5 (50, 256, 13, 13) 第五个conv层的图像尺寸为13*13,feature map个数为256
pool5 (50, 256, 6, 6) 第五个pool层的图像尺寸为13*13,feature map个数为256fc6 (50, 4096)
第六个fc层的图像尺寸为4096fc7 (50, 4096)
第七个fc层的图像尺寸为4096fc8 (50, 1000)
第八个fc层的图像尺寸为1000prob (50, 1000)
probablies层的尺寸为1000
下面画出该数据,从图中观察更为形象
2.查看每一层的参数结构
代码如下:
- 1
- 2
第i次循环体内部
- layer_name提取的是net的第i层的名称
- param提取的是net的第i层的参数
结果如下:
conv1 (96, 3, 11, 11) (96,) 第一个conv层的filters的尺寸,这里的3是因为输入层的data为rgb,可以看做三个feature maps
conv2 (256, 48, 5, 5) (256,) 第二个conv层的filters尺寸
conv3 (384, 256, 3, 3) (384,)第三个conv层的filters尺寸
conv4 (384, 192, 3, 3) (384,)第四个conv层的filters尺寸
conv5 (256, 192, 3, 3) (256,)第五个conv层的filters尺寸
fc6 (4096, 9216) (4096,)第一个fc层的权值尺寸
fc7 (4096, 4096) (4096,)第二个fc层的权值尺寸
fc8 (1000, 4096) (1000,)第三个fc层的权值尺寸应该注意到,由于pool层和norm层并没有需要优化的参数,所以参数中并没有关于pool层和norm层的信息
下面给出filters如何对输入数据进行filter的一幅形象化的图
3.可视化4D数据的函数
4.查看第一个convolution layers的filters的图像
代码如下:
- 1
- 2
- 3
- filters存储的是第一个conv层的filters的数据
- 例子:形状为:(96, 3, 11, 11)
结果如下:共96幅图像(96个filters,每个filters为11*11*3)
5.查看第一个convolution layers的输出(activations)的图像
代码如下:
- 1
- 2
- feat存储的是第一个卷基层的后36幅图像
feat的尺寸为(36, 55, 55)结果如下:
6. 查看pool5的输出图像
代码如下:
- 1
- 2
- feat存储的是pool5的输出图像
feat的尺寸为(256, 6, 6)结果如下:
7. 第一个全连接层的输出
代码如下:
- 1
- 2
- 3
- 4
- 5
结果如下:
9.小结
在获取了net后:
点击查看原文
如何获取网络各层的数据:net.blobs[‘layer name’].data[0]
如何获取网络各层的参数数据:net.params[‘layer name’][0].data
- caffe中如何可视化cnn各层的输出
- caffe中如何可视化cnn各层的输出
- caffe中如何可视化cnn各层的输出
- caffe中如何可视化cnn各层的输出
- caffe(12) CNN各层的理解
- 如何得到卷积层输出的深度--CNN卷积层
- caffe cnn提取各层特征并可视化结果(Python接口)
- Caffe CNN特征可视化
- Caffe CNN特征可视化
- Caffe CNN特征可视化
- Caffe CNN特征可视化
- caffe的层结构可视化工具
- Caffe各层可视化, python实现
- cnn神经网络卷积层可视化
- 如何在Caffe中配置每一个层的结构
- 如何在Caffe中配置每一个层的结构
- 如何在Caffe中配置每一个层的结构
- 如何在Caffe中配置每一个层的结构
- Maven笔记
- UnityC#解析嵌套json数据
- GDIplus的初次接触--加载并显示常用格式图片
- RocketMQ-应用
- Class文件格式
- caffe中如何可视化cnn各层的输出
- JS 基础
- 博弈问题方法单-----对称性篇
- 能让程序员心花怒放的七种礼物
- 求1-10,20-30,45-60三个区间数字的总和
- 消息队列及PHP中的简单实现与应用
- 开发笔记-魔女兵器-1
- 2017年工作总结
- 《Java 编程技巧1001条》 第394条 数组分类(排序)