主要内容

encoderDecoderNetwork

创建encoder-decoder网络

描述

例子

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

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

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

例子

全部折叠

创建包含四个编码器块的编码器模块。

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

创建包含四个解码器块的解码器模块。

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

创建桥图层。

桥=[卷积2dlayer (3,1024,“填充”“相同”) reluLayer convolution2dLayer (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.cn .layer. layer] Connections: [62x2 table] Learnables: [46x3 table] State: [0x3 table] InputNames: {'encoderImageInputLayer'} OutputNames: {'encoderDecoderFinalConvLayer'} Initialized: 1

显示网络。

analyzeNetwork (unet)

创建一个GAN编码器网络与四个下采样操作从预先训练的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 = @(block)[转座conv2dlayer (2,numChannels(block),“步”2) convolution2dLayer (numChannels(块),“填充”“相同”) reluLayer convolution2dLayer (numChannels(块),“填充”“相同”) reluLayer);

使用与编码器模块中下采样块数量相同的上采样块创建解码器模块。

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

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

encoderDecoderNetwork([224 224 3],编码器,解码器,...“OutputChannels”3,“SkipConnections”“连接”
net = dlnetwork with properties: Layers: [139x1 nnet.cn .layer. layer] Connections: [167x2 table] Learnables: [116x3 table] State: [0x3 table] InputNames: {'data'} OutputNames: {'encoderDecoderFinalConvLayer'} Initialized: 1

显示网络。

analyzeNetwork(净)

输入参数

全部折叠

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

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

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

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

名称-值参数

指定可选的用逗号分隔的对名称,值参数。的名字参数是name和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

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

连接解码器输出的网络,指定为一层或一组层。如果你指定'OutputChannels,然后在解码器的最后1 × 1卷积层之后连接最终的网络。

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

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

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

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

当你指定'SkipConnections的参数“没有”,encoderDecoderNetwork函数忽略'SkipConnectionNames'.

数据类型:字符|字符串

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

数据类型:字符|字符串

输出参数

全部折叠

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

介绍了R2021a