主要内容

encoderDecoderNetwork

创建编解码器网络

描述

例子

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

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

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

例子

全部折叠

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

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

输入参数

全部折叠

网络输入大小,指定为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参数as“没有”,encoderDecoderNetwork函数忽略'的值SkipConnectionNames”。

数据类型:字符|字符串

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

数据类型:字符|字符串

输出参数

全部折叠

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

版本历史

R2021a中引入