文档

deepDreamImage

用深度梦来可视化网络特征

语法

I = deepDreamImage(网络,图层,频道)
I = deepDreamImage(___、名称、值)

描述

例子

= deepDreamImage (渠道返回强烈激活通道的图像数组渠道在网络内部的具有数字索引或名称的层的.这些图像突出了网络学习到的特征。

= deepDreamImage (___名称,值返回带有一个或多个指定的附加选项的图像名称,值使用任何前面的语法对参数。

例子

全部折叠

创建一个简单的卷积神经网络和可视化的学习特征使用deepDreamImage

加载样例数据。

[XTrain,TTrain] = digitTrain4DArrayData;

构造一个简单的网络对数字图像数据进行分类。

图层= [...imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,“步”2) fullyConnectedLayer(10) softmaxLayer classificationLayer];

创建培训选项。

options = trainingOptions(“个”);

训练网络。

net = trainNetwork(XTrain,TTrain,layers,options);
单CPU训练。初始化图像归一化。|=========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习| | | | | | |精度损失速率(秒)  | |=========================================================================================| | 1 | 1 | 0.88 | 2.3026 | 7.81% | 0.0100 | | 2 | 50 | 17.83 | 2.2735 | 33.59% | 0.0100 | | 3 | 100 | 34.88 | 1.6613 | 48.44% | 0.0100 | | 150 | | 51.86 | 1.1803 | 64.06% | 0.0100 | | 6 | 200 |69.82 | 1.0499 | 64.06% | 0.0100 | | 250 | | 87.64 | 0.8391 | 76.56% | 0.0100 | | 300 | | 105.68 | 0.6981 | 77.34% | 0.0100 | | 350 | | 124.04 | 0.7084 | 77.34% | 0.0100 | | 400 | | 141.05 | 0.4902 | 87.50% | 0.0100 | | 450 | | 157.53 | 0.3839 | 91.41% | 0.0100 | | 500 | | 174.68 | 0.2986 | 92.19% | 0.0100 | | | 550 | | 0.0100 | 191.65 | 0.2583 | 93.75% | 16 | 600 | 208.03 | 0.2009 | 97.66% | 0.0100 | | 650 | | 224.60 | 0.2642 | 92.97% | 0.0100 | | 700 | | 241.28 | 0.1448|97.66% | 0.0100 | | 20 | 750 | 257.68 | 0.1314 | 96.88% | 0.0100 | | 21 | 800 | 274.27 | 0.1232 | 97.66% | 0.0100 | | 22 | 850 | 290.90 | 0.1009 | 98.44% | 0.0100 | | 24 | 900 | 307.38 | 0.1051 | 100.00% | 0.0100 | | 25 | 950 | 323.95 | 0.1483 | 97.66% | 0.0100 | | 26 | 1000 | 340.95 | 0.0743 | 99.22% | 0.0100 | | 27 | 1050 | 358.96 | 0.0603 | 100.00% | 0.0100 | | 29 | 1100 | 375.05 | 0.0769 | 99.22% | 0.0100 | | 30 | 1150 | 391.33 | 0.0524 | 100.00% | 0.0100 | | 30 | 1170 | 397.73 | 0.0566 | 100.00% | 0.0100 | |=========================================================================================|

要生成与给定数字最接近的图像,指定最后的全连接层。查看网络层次。

网层
2 'conv' Convolution 20 5x5x1 convolutions with stride [1 1] and padding [0 0] 3 'relu' relu 4 'maxpool' Max Pooling with stride [2 2] and padding [0 0] 5 'fc' Fully Connected 10 full Connected Layer 6 'softmax' softmax softmax 7 'classoutput' Classification Output crossentropyex with '0', '1' and 8 other class

指定最后一个全连接层。

层=“俱乐部”

指定显示数字0的第一个通道。

Channels = 1;

生成和显示图像。

I = deepDreamImage(net,layer,channels,“详细”、假);imshow(我)

输入参数

全部折叠

训练过的网络,指定为SeriesNetwork对象返回的trainNetwork函数。

层以可视化,指定为正整数标量或字符向量。要可视化分类层特征,请选择分类层之前的最后一个完全连接层。

    提示:选择ReLU或dropout层进行可视化可能不会产生有用的图像,因为这些层对网络梯度有影响。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符

查询的通道,指定为通道索引的标量或向量。如果渠道是一个矢量,每个通道的层激活是独立优化的。的可能选择渠道取决于所选的层。对于卷积层,NumFilters属性指定输出通道的数量。对于完全连接的层,OutputSize属性指定输出通道的数量。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

名称-值对实参

指定逗号分隔的可选对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在单引号内(' ')。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:deepDreamImage(网络层、通道“NumItetations”,100年,“ExecutionEnvironment”,gpu)每个金字塔层使用100次迭代生成图像,并使用GPU。

全部折叠

图像初始化深度梦。使用此语法可以查看如何修改映像以最大化网络层激活。初始图像的最小高度和宽度取决于所有的层,包括选定的层:

  • 对于接近网络末端的层,初始图像必须至少与图像输入层相同的高度和宽度。

  • 对于接近网络开始的层,初始图像的高度和宽度可以小于图像输入层。但是,它必须足够大,以便在所选层产生标量输出。

  • 初始图像的通道数必须与网络图像输入层的通道数匹配。

如果您不指定初始图像,该软件将使用从标准正态分布中绘制的像素的随机图像。另请参阅“PyramidLevels”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

用于生成输出图像的多分辨率图像金字塔层数,指定为正整数。增加金字塔级别的数量,以产生更大的输出图像,但要付出额外的计算。若要生成与初始图像相同大小的图像,请将层数设置为1

例子:“PyramidLevels”,3

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

每个金字塔级别之间的缩放,指定为值为> 1的标量。减少金字塔的规模,以合并到输出图像的细颗粒细节。调整金字塔的规模可以帮助生成更多信息的图层在网络的开始。

例子:“PyramidScale”,1.4

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

每个金字塔层的迭代次数,指定为正整数。增加迭代次数以产生更详细的图像,但要牺牲额外的计算。

例子:“NumIterations”,10

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

应用于输出图像的缩放类型,指定为逗号分隔的对,由“OutputScaling”和以下其中之一:

价值 描述
“线性” 在区间[0,1]内缩放输出像素值。输出图像对应每一层通道,我(::,:,频道),独立伸缩。
“没有” 禁用输出缩放。

例子:“OutputScaling”、“线性”

数据类型:字符

指示符,用于在命令窗口中显示进度信息,指定为逗号分隔的对,由“详细”或者1 (真正的)或0 ()。显示的信息包括金字塔级别、迭代和激活强度。

例子:“详细”,0

数据类型:逻辑

函数的执行环境,指定为逗号分隔的对,由“ExecutionEnvironment”和以下值之一。

价值 描述
“汽车” 如果有GPU,请使用GPU,否则请使用CPU。
“图形” 使用GPU。要使用GPU,你必须有并行计算工具箱™和CUDA®使英伟达®GPU具有3.0或更高的计算能力。如果没有合适的GPU,软件会返回一个错误。
“cpu” 使用CPU。

例子:“ExecutionEnvironment”、“汽车”

数据类型:字符

输出参数

全部折叠

输出图像,由存储在4-D数组中的灰度或真彩色(RGB)图像序列指定。的第四维图像被串联起来使图像的输出最大化渠道(k)我(:,:,:,k).可以使用显示输出图像imshow

算法

这个函数实现了deep dream的一个版本,使用多分辨率图像金字塔和拉普拉斯金字塔梯度归一化生成高分辨率图像。要了解更多关于拉普拉斯金字塔梯度归一化的信息,请看这篇博文:TensorFlow的DeepDreaming

参考文献

[1]TensorFlow的DeepDreaming.https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb

在R2017a中介绍

这个话题有帮助吗?