主要内容

encoderDecoderNetwork

创建encoder-decoder网络

自从R2021a

描述

例子

= encoderDecoderNetwork (inputSize,编码器,译码器)连接一个网络编码器和译码器网络创建一个encoder-decoder网络,

这个函数需要深度学习工具箱™。

= encoderDecoderNetwork (inputSize,编码器,译码器,名称,值)修改方面的encoder-decoder网络使用名称-值参数。

例子

全部折叠

创建编码器模块四个编码器组成的街区。

encoderBlock = @(块)[convolution2dLayer(3 2 ^(5 +块),“填充”,“相同”)reluLayer convolution2dLayer(3 2 ^(5 +块),“填充”,“相同”)reluLayer maxPooling2dLayer (2“步”,2)];编码器= blockedNetwork (encoderBlock 4“NamePrefix”,“encoder_”);

创建四个译码器的译码器模块组成。

decoderBlock = @(块)[transposedConv2dLayer(2 2 ^ 10(街区),“步”2)convolution2dLayer(2 ^ 10(街区),“填充”,“相同”10)reluLayer convolution2dLayer(2 ^(街区),“填充”,“相同”)reluLayer);解码器= blockedNetwork (decoderBlock 4“NamePrefix”,“decoder_”);

创建层的桥梁。

桥= [convolution2dLayer (1024,“填充”,“相同”)reluLayer convolution2dLayer (1024,“填充”,“相同”)reluLayer dropoutLayer (0.5)];

指定网络输入的大小。

inputSize = (224 224 3);

创建U-Net网络通过连接编码器模块,桥,译码器模块和添加跳过连接。

unet = encoderDecoderNetwork (inputSize,编码器,译码器,“OutputChannels”3,“SkipConnections”,“连接”,“LatentNetwork”桥)
unet = dlnetwork属性:层:[55 x1 nnet.cnn.layer.Layer]连接:[62 x2表]可学的:[46 x3表]状态:[0 x3表]InputNames: {“encoderImageInputLayer”} OutputNames: {“encoderDecoderFinalConvLayer”}初始化:1观点总结总结。

显示网络。

analyzeNetwork (unet)

创建一个甘编码器网络四个将采样操作从一个pretrained GoogLeNet网络。

深度= 4;[编码器,outputNames] = pretrainedEncoderNetwork (“googlenet”、深度);

确定输入编码器网络的大小。

inputSize = encoder.Layers (1) .InputSize;

确定激活层编码器的输出大小网络通过创建一个示例数据输入,然后调用向前,它返回激活。

exampleInput = dlarray (0 (inputSize),SSC的);exampleOutput =细胞(1、长度(outputNames));[exampleOutput{}): =前进(exampleInput编码器,“输出”,outputNames);

在译码器模块确定通道的数量在每个激活第三通道的长度。

numChannels = cellfun (@ (x)大小(extractdata (x), 3), exampleOutput);numChannels = fliplr (numChannels (1: end-1));

定义一个函数创建一个数组一个译码器块的层。

decoderBlock = @(块)[transposedConv2dLayer (2, numChannels(块),“步”2)convolution2dLayer (numChannels(块),“填充”,“相同”)reluLayer convolution2dLayer (numChannels(块),“填充”,“相同”)reluLayer);

创建解码器模块与相同数量的upsampling块有downsampling块编码器模块。

解码器= blockedNetwork (decoderBlock、深度);

创建U-Net网络通过连接编码器模块和解码模块和添加跳过连接。

网= encoderDecoderNetwork(224 224 3,编码器,译码器,“OutputChannels”3,“SkipConnections”,“连接”)
网= dlnetwork属性:层:x1 nnet.cnn.layer.Layer[139]连接:[167 x2表]可学的:[116 x3表]状态:[0 x3表]InputNames:{“数据”}OutputNames: {“encoderDecoderFinalConvLayer”}初始化:1观点总结总结。

显示网络。

analyzeNetwork(净)

输入参数

全部折叠

网络输入大小,指定为正整数的转换向量。inputSize的形式(HWC),H的高度,W是宽度,C通道的数量。

例子:[28日28日3]指定一个输入大小三路28-by-28像素的图像。

编码器网络,作为一个指定dlnetwork(深度学习工具箱)对象。

译码器网络,作为一个指定dlnetwork(深度学习工具箱)对象。网络必须要有一个输入和一个输出。

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“SkipConnections”、“连接”指定的类型跳过连接编码器和解码器之间的网络连接。

网络连接编码器和解码器,指定为一层或层的数组。

网络连接到译码器的输出,指定为一层或层的数组。如果你指定的OutputChannels的论点,那么最后1×1卷积后的最终网络连接层的解码器。

译码器的输出通道网络,指定为一个正整数。如果你指定这个参数,那么最后一层的解码器执行1×1卷积操作指定数量的渠道。

名字对编码器/解码器层的激活被跳过合并连接,指定为其中一个值。

  • “汽车”- - -encoderDecoderNetwork函数决定的名字对编码器/解码器自动层。

  • 2字符串数组,第一列是编码器层和第二列的名称是各自的名字译码器层。

当你指定的SkipConnections的参数“没有”,encoderDecoderNetwork函数忽略了值的SkipConnectionNames”。

数据类型:字符|字符串

类型的跳过编码器和解码器之间的联系网络,指定为“没有”,“汽车”,或“连接”

数据类型:字符|字符串

输出参数

全部折叠

编码器/解码器网络,作为一个返回dlnetwork(深度学习工具箱)对象。

版本历史

介绍了R2021a