可视化卷积神经网络的特征
此示例显示了如何可视化卷积神经网络学习的功能。
卷积神经网络使用特性分类图像。网络在培训过程中自身了解这些功能。在训练期间网络学习的是什么有时候不清楚。但是,你可以使用DeepDreamImage.
函数将学习到的特征可视化。
的卷积的图层输出3D激活量,其中沿第三尺寸的切片对应于施加到图层输入的单个滤波器。频道输出完全连接网络末端的层对应于较早层次学习到的特征的高级组合。
您可以通过使用DeepDreamImage.
生成强烈激活网络层的特定通道的图像。
该示例需要深入学习工具箱™和深度学习工具箱模型GoogLeNet网络金宝app支持包。
加载净化网络
加载佩带的Googlenet网络。
网= googlenet;
可视化早期卷积层
在google网络中有多个卷积层。面向网络开始的卷积层具有较小的接收域大小,并学习较小的、低级别的特征。网络末端的层有更大的接受域大小,学习更大的特征。
使用分析
,查看网络结构,定位卷积层。
分析(网)
卷积层1上的功能
集层
作为第一个卷积层。这一层是网络中的第二层,并以此命名“conv1-7x7_s2”
.
层= 2;name = net.Layers(层). name
name ='conv1-7x7_s2'
使用。可视化此层学习的前36个特征DeepDreamImage.
通过设置渠道
是指标的向量1:36时
.集'Pyramidlevels'
为1,这样图像就不会缩放。要一起显示图像,您可以使用imtile
.
DeepDreamImage.
默认情况下,使用兼容的GPU(如果有)。否则它使用CPU。使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持设备的信息,请参阅金宝appGPU通金宝app过发布支持(并行计算工具箱).
频道= 1:36;我= DeepDreamImage(网络,名称,频道,...'Pyramidlevels',1);
|==============================================| | 迭代| |金字塔激活水平| | |力量 | | |==============================================| | 1 | 0.26 | 1 | | 2 | 6.99 | 1 | | 3 | 14.24 | 1 | | 4 | 21.49 | 1 | | 5 | 28.74 | 1 | | 6 | 35.99 | 1 | | 7 | 43.24 | 1 | | 8 | 50.50 | 1 | | 9 | 57.75 | 1 | | 10 | 65.00 | 1 ||==============================================|
图I = imtile(I,'thumbnailsize'64年[64]);imshow(i)标题([“层”、名称、“特性”],'口译员',“没有”)
这些图像大多包含边缘和颜色,这表明在层过滤器“conv1-7x7_s2”
是边缘检测器和滤色器。
卷积层2上的功能
命名为第二层卷积层“conv2-3x3_reduce”
,对应第6层。通过设置将这一层学到的前36个特征可视化渠道
是指标的向量1:36时
.
抑制优化过程的详细输出,设置'verbose'
来“假”
呼吁deepDreamImage。
层= 6;name = net.Layers(层). name
name = ' conv2-3x3_reduce '
频道= 1:36;我= DeepDreamImage(网络,名称,频道,...'verbose',错误的,...'Pyramidlevels',1);图I = imtile(I,'thumbnailsize'64年[64]);imshow(I) name = net.Layers(layer).Name;标题([“层”、名称、“特性”],'口译员',“没有”)
该层的过滤器检测比第一卷积层更复杂的图案。
可视化更深层的卷积层
更深层次的层学习早期层次学习的高级组合。
增加金字塔级别的数量和每个金字塔级别的迭代可以产生更详细的图像,但需要额外的计算。控件可以增加迭代次数'numiteration'
选项,并使用'Pyramidlevels.
' 选项。
第= 97;name = net.Layers(层). name
name = ' inception_4e-1x1 '
频道= 1:6;我= DeepDreamImage(网络,名称,频道,...'verbose',错误的,...“numiteration”, 20岁,...'Pyramidlevels'2);图I = imtile(I,'thumbnailsize'250年[250]);imshow(I) name = net.Layers(layer).Name;标题([“层”、名称、“特性”],'口译员',“没有”)
请注意,更深入到网络的层产生更详细的过滤器,这些过滤器已经学习了复杂的模式和纹理。
可视化全连接层
要生产最接近每个类的图像,请选择完全连接的图层和设置渠道
成为课程的指数。
选择完全连接层(142层)。
层= 142;name = net.Layers(层). name
name = ' loss3-classifier '
通过设置选择要可视化的类渠道
成为这些类名的指数。
通道= [114 293 341 484 563 950];
类存储在类
属性的值(最后一层)。中的条目可以查看所选类的名称渠道
.
net.Layers(结束). class(渠道)
ans =6×1分类蜗牛老虎斑马城堡喷泉草莓
生成强烈激活这些类的详细图像。集'numiteration'
到100在呼叫到DeepDreamImage.
以产生更详细的图像。从完全连接层生成的图像对应于图像类。
我= DeepDreamImage(网络,名称,频道,...'verbose',错误的,...'numiteration', 100,...'Pyramidlevels'2);图I = imtile(I,'thumbnailsize'250年[250]);imshow(I) name = net.Layers(layer).Name;标题([“层”、名称、“特性”])
生成的图像强烈激活所选的类。为“斑马”类生成的图像包含不同的斑马条纹,而为“城堡”类生成的图像包含炮塔和窗户。
另请参阅
googlenet.
|DeepDreamImage.
|咬合敏感
|gradCAM
|imageLIME