deepDreamImage
用深度梦来可视化网络特征
语法
I = deepDreamImage(网络,图层,频道)
I = 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
对象
训练过的网络,指定为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。
“InitialImage”
-图像初始化深度梦想
数组
图像初始化深度梦。使用此语法可以查看如何修改映像以最大化网络层激活。初始图像的最小高度和宽度取决于所有的层,包括选定的层:
对于接近网络末端的层,初始图像必须至少与图像输入层相同的高度和宽度。
对于接近网络开始的层,初始图像的高度和宽度可以小于图像输入层。但是,它必须足够大,以便在所选层产生标量输出。
初始图像的通道数必须与网络图像输入层的通道数匹配。
如果您不指定初始图像,该软件将使用从标准正态分布中绘制的像素的随机图像。另请参阅“PyramidLevels”
.
数据类型:双
|单
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
“PyramidLevels”
-金字塔层数
3(默认)|正整数
用于生成输出图像的多分辨率图像金字塔层数,指定为正整数。增加金字塔级别的数量,以产生更大的输出图像,但要付出额外的计算。若要生成与初始图像相同大小的图像,请将层数设置为1
.
例子:“PyramidLevels”,3
数据类型:双
|单
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
“PyramidScale”
-金字塔层级之间的比例
1.4(默认)|标量值> 1
每个金字塔级别之间的缩放,指定为值为> 1的标量。减少金字塔的规模,以合并到输出图像的细颗粒细节。调整金字塔的规模可以帮助生成更多信息的图层在网络的开始。
例子:“PyramidScale”,1.4
数据类型:双
|单
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
“NumIterations”
-每个金字塔级别的迭代次数
10(默认)|正整数
每个金字塔层的迭代次数,指定为正整数。增加迭代次数以产生更详细的图像,但要牺牲额外的计算。
例子:“NumIterations”,10
数据类型:双
|单
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
“OutputScaling”
-应用于输出的缩放类型
“线性”
(默认)|“没有”
应用于输出图像的缩放类型,指定为逗号分隔的对,由“OutputScaling”
和以下其中之一:
价值 | 描述 |
---|---|
“线性” |
在区间[0,1]内缩放输出像素值。输出图像对应每一层通道,我(::,:,频道) ,独立伸缩。 |
“没有” |
禁用输出缩放。 |
例子:“OutputScaling”、“线性”
数据类型:字符
“详细”
—进度显示指示灯
1(默认)| 0
指示符,用于在命令窗口中显示进度信息,指定为逗号分隔的对,由“详细”
或者1 (真正的
)或0 (假
)。显示的信息包括金字塔级别、迭代和激活强度。
例子:“详细”,0
数据类型:逻辑
“ExecutionEnvironment”
—功能的执行环境
“汽车”
(默认)|“图形”
|“cpu”
函数的执行环境,指定为逗号分隔的对,由“ExecutionEnvironment”
和以下值之一。
价值 | 描述 |
---|---|
“汽车” |
如果有GPU,请使用GPU,否则请使用CPU。 |
“图形” |
使用GPU。要使用GPU,你必须有并行计算工具箱™和CUDA®使英伟达®GPU具有3.0或更高的计算能力。如果没有合适的GPU,软件会返回一个错误。 |
“cpu” |
使用CPU。 |
例子:“ExecutionEnvironment”、“汽车”
数据类型:字符
输出参数
算法
这个函数实现了deep dream的一个版本,使用多分辨率图像金字塔和拉普拉斯金字塔梯度归一化生成高分辨率图像。要了解更多关于拉普拉斯金字塔梯度归一化的信息,请看这篇博文:TensorFlow的DeepDreaming.
参考文献
[1]TensorFlow的DeepDreaming.https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb
在R2017a中介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。