encoderDecoderNetwork
创建编码器-解码器网络
语法
描述
例子
从编码器和解码器块创建U-Net网络
创建由四个编码器块组成的编码器模块。
encoderBlock = @(block) [convolution2dLayer(3,2^(5+block),“填充”,“相同”) reluLayer convolution2dLayer(3,2^(5+block),“填充”,“相同”reluLayer maxPooling2dLayer(2,“步”, 2)];encoder = blockedNetwork(encoderBlock,4,“NamePrefix”,“encoder_”);
创建由四个解码器块组成的解码器模块。
decoderBlock = @(block) [transposedConv2dLayer(2,2^(10-block),“步”2) convolution2dLayer(2 ^ 10(街区),“填充”,“相同”) reluLayer卷积2dlayer (3,2^(10-block),“填充”,“相同”) reluLayer);解码器= blockedNetwork(decoderBlock,4,“NamePrefix”,“decoder_”);
创建桥层。
桥=[卷积2dlayer (3,1024,“填充”,“相同”) reluLayer卷积2dlayer (3,1024,“填充”,“相同”) reluLayer dropoutLayer(0.5);
指定网络输入大小。
inputSize = [224 224 3];
通过连接编码器模块、网桥和解码器模块并添加跳过连接来创建U-Net网络。
unet = encoderDecoderNetwork(inputSize,编码器,解码器,...“OutputChannels”3,...“SkipConnections”,“连接”,...“LatentNetwork”桥)
unet = dlnetwork with properties: Layers: [55x1 nnet.cnn.layer.Layer] Connections: [62x2 table] Learnables: [46x3 table] State: [0x3 table] InputNames: {'encoderImageInputLayer'} OutputNames: {'encoderDecoderFinalConvLayer'} Initialized: 1查看summary with summary。
显示网络。
analyzeNetwork (unet)
从预训练的GoogLeNet创建U-Net
从预先训练的GoogLeNet网络中使用四个下采样操作创建GAN编码器网络。
Depth = 4;[encoder,outputNames] = pretrainedEncoderNetwork(“googlenet”、深度);
确定编码器网络的输入大小。
inputSize = encode . layers (1).InputSize;
通过创建一个样例数据输入,然后调用,确定编码器网络中激活层的输出大小向前
,它返回激活。
exampleInput = dlarray(zero (inputSize)),SSC的);exampleOutput = cell(1,length(outputNames));[exampleOutput{:}] = forward(编码器,exampleInput,“输出”, outputNames);
确定解码器块中的通道数量作为每个激活中的第三个通道的长度。
numChannels = cellfun(@(x) size(extractdata(x),3),exampleOutput);numChannels = fliplr(numChannels(1:end-1));
定义一个函数,为一个解码器块创建层数组。
decoderBlock = @(block)[转座体conv2dlayer (2,numChannels(block),“步”2) convolution2dLayer (numChannels(块),“填充”,“相同”) reluLayer卷积2dlayer (3,numChannels(block),“填充”,“相同”) reluLayer);
创建解码器模块,其上采样块的数量与编码器模块中的下采样块的数量相同。
decoder = blockedNetwork(decoderBlock,depth);
通过连接编码器模块和解码器模块并添加跳过连接来创建U-Net网络。
net = encoderDecoderNetwork([224 224 3],编码器,解码器,...“OutputChannels”3,“SkipConnections”,“连接”)
net = dlnetwork with properties: Layers: [139x1 nnet.cnn.layer.Layer] Connections: [167x2 table] Learnables: [116x3 table] State: [0x3 table] InputNames: {'data'} OutputNames: {'encoderDecoderFinalConvLayer'} Initialized: 1查看summary with summary。
显示网络。
analyzeNetwork(净)
输入参数
inputSize
- - - - - -网络输入大小
正整数的三元向量
网络输入大小,指定为3元素的正整数向量。inputSize
具有[HWC),H是高度,W是宽度,和C是通道数。
例子:[28 28 3]
为3通道图像指定28 × 28像素的输入大小。
编码器
- - - - - -编码器网络
dlnetwork
对象
编码器网络,指定为dlnetwork
(深度学习工具箱)对象。
译码器
- - - - - -译码器网络
dlnetwork
对象
解码器网络,指定为dlnetwork
(深度学习工具箱)对象。网络必须有一个输入和一个输出。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“SkipConnections”、“连接”
将编码器和解码器网络之间的跳过连接类型指定为连接。
LatentNetwork
- - - - - -网络连接编码器和解码器
[]
(默认)|层对象|图层对象数组
连接编码器和解码器的网络,指定为层或层的数组。
FinalNetwork
- - - - - -网络连接到解码器的输出
[]
(默认)|层对象|图层对象数组
连接到解码器输出的网络,指定为层或层的数组。如果您指定'OutputChannels
参数,则在解码器的最终1乘1卷积层之后连接最终网络。
OutputChannels
- - - - - -输出通道数
[]
(默认)|正整数
解码器网络的输出通道数,指定为正整数。如果指定此参数,则解码器的最后一层将对指定数量的通道执行1乘1的卷积操作。
SkipConnectionNames
- - - - - -编码器/解码器层对的名称
“汽车”
(默认)|米-by-2 string数组
由跳过连接合并其激活的编码器/解码器层对的名称,指定为以下值之一。
“汽车”
- - -encoderDecoderNetwork
函数自动确定编码器/解码器层对的名称。米-by-2 string array -第一列是编码器层的名称,第二列是各自的解码器层的名称。
当您指定'SkipConnections
的论证为“没有”
,encoderDecoderNetwork
函数忽略'的值SkipConnectionNames
'.
数据类型:字符
|字符串
SkipConnections
- - - - - -跳接类型
“没有”
(默认)|“汽车”
|“连接”
编码器和解码器网络之间跳过连接的类型,指定为“没有”
,“汽车”
,或“连接”
.
数据类型:字符
|字符串
版本历史
在R2021a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。