主要内容

blockedNetwork

创建重复块结构的网络

自从R2021a

描述

例子

= blockedNetwork (有趣的numBlocks创建一个未初始化的网络,,包括numBlocks层块按顺序连接。这个函数有趣的创建每个层块。

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

= blockedNetwork (有趣的numBlocks“NamePrefix”,namePrefix添加前缀namePrefix到网络中的所有层名。

例子

全部折叠

定义一个函数来创建一个层数组。第一个块在卷积层中有32个滤波器。在每个连续的块中,过滤器的数量翻倍。

unetBlock = @(block)[卷积2dlayer (3,2^(5+block)) relullayer卷积2dlayer (3,2^(5+block)) reluLayer maxPooling2dLayer(2,“步”, 2)];

创建一个由四个重复的层块组成的网络。为网络中的所有层名添加前缀“encoder_”。

net = blockedNetwork(unetBlock,4,“NamePrefix”“encoder_”
net = dlnetwork with properties: Layers: [20x1 nnet.cnn.layer.Layer] Connections: [19x2 table] Learnables: [16x3 table] State: [0x3 table] InputNames: {'encoder_Block1Layer1'} OutputNames: {'encoder_Block4Layer5'} Initialized: 0查看summary with summary。

初始化大小输入的网络权重[224 224 3]。

Net =初始化(Net,dlarray(0 (224,224,3),“SSC”));

显示网络。

analyzeNetwork(净)

从预先训练好的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(净)

输入参数

全部折叠

创建层块的函数,指定为具有此签名的函数:

block = fun(blockIndex)

  • 的输入有趣的blockIndex,是范围为[1,numBlocks]。

  • 的输出有趣的,是一个层或层数组。

网络中的块数,指定为正整数。

网络中所有层名称的前缀,指定为字符串或字符向量。

数据类型:字符|字符串

输出参数

全部折叠

具有重复块结构的网络,返回为dlnetwork(深度学习工具箱)对象。

提示

  • dlnetwork(深度学习工具箱)返回的blockedNetwork未初始化,不能用于训练或推断。要初始化网络,请使用初始化(深度学习工具箱)函数。

  • 方法将编码器网络连接到解码器网络encoderDecoderNetwork函数。

版本历史

R2021a中引入