主要内容

encoderDecoderNetwork

创建编码器-解码器网络

描述

例子

= encoderDecoderNetwork (inputSize编码器译码器连接编码器网络和解码器网络,创建编码器-解码器网络,

该功能需要深度学习工具箱™。

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

例子

全部折叠

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

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网络中使用四个下采样操作创建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(净)

输入参数

全部折叠

网络输入大小,指定为3元素的正整数向量。inputSize具有[HWC),H是高度,W是宽度,和C是通道数。

例子:[28 28 3]为3通道图像指定28 × 28像素的输入大小。

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

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

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

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

连接到解码器输出的网络,指定为层或层的数组。如果您指定'OutputChannels参数,则在解码器的最终1乘1卷积层之后连接最终网络。

解码器网络的输出通道数,指定为正整数。如果指定此参数,则解码器的最后一层将对指定数量的通道执行1乘1的卷积操作。

由跳过连接合并其激活的编码器/解码器层对的名称,指定为以下值之一。

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

  • -by-2 string array -第一列是编码器层的名称,第二列是各自的解码器层的名称。

当您指定'SkipConnections的论证为“没有”,encoderDecoderNetwork函数忽略'的值SkipConnectionNames'.

数据类型:字符|字符串

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

数据类型:字符|字符串

输出参数

全部折叠

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

版本历史

在R2021a中引入