encoderDecoderNetwork
创建编解码器网络
语法
描述
例子
从编码器和解码器块创建U-Net网络
创建由四个编码器块组成的编码器模块。
encoderBlock = @(block)[卷积2dlayer (3,2^(5+block)),“填充”,“相同”reluLayer卷积2dlayer (3,2^(5+block),“填充”,“相同”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块),“填充”,“相同”) reluLayer);解码器= blockedNetwork(decoderBlock,4,“NamePrefix”,“decoder_”);
创建桥接层。
bridge = [convolution2dLayer(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编码器网络。
深度= 4;[encoder,outputNames] = pretrainedEncoderNetwork(“googlenet”、深度);
确定编码器网络的输入大小。
inputSize =编码器。layers (1).InputSize;
通过创建一个样例数据输入,然后调用,确定编码器网络中激活层的输出大小向前
,它返回激活。
exampleInput = dlarray(0 (inputSize),SSC的);exampleOutput = cell(1,length(outputNames));[exampleOutput{:}] = forward(encoder,exampleInput,“输出”, outputNames);
将解码器块中的通道数量确定为每次激活的第三个通道的长度。
numChannels = cellfun(@(x) size(extractdata(x),3),exampleOutput);numChannels = fliplr(numChannels(1:end-1));
定义一个函数,为一个解码器块创建一个层数组。
decoderBlock = @(block) [transposedConv2dLayer(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字符串数组
编码器/解码器层对的名称,其激活由跳过连接合并,指定为这些值之一。
“汽车”
- - -encoderDecoderNetwork
函数自动确定编码器/解码器层对的名称。米-by-2 string array -第一列是编码器层的名称,第二列是各自的解码器层的名称。
当你指定'SkipConnections
参数as“没有”
,encoderDecoderNetwork
函数忽略'的值SkipConnectionNames
”。
数据类型:字符
|字符串
SkipConnections
- - - - - -箕斗连接方式
“没有”
(默认)|“汽车”
|“连接”
编码器和解码器网络之间的跳过连接类型,指定为“没有”
,“汽车”
,或“连接”
.
数据类型:字符
|字符串
版本历史
R2021a中引入
打开举例
Vous possédez une版本modifiée de cet举例。Souhaitez-vous ouvrir cet示例avec vos修改?
对MATLAB
Vous avez cliqué sur un lien qui对应à cette命令MATLAB:
倒exécuter la command, saisissez-la dans la fenêtre de command de MATLAB。Les navigateurs web ne 金宝appsupport pas Les command MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。