文档帮助中心文档
创建encoder-decoder网络
净= encoderDecoderNetwork (inputSize、编码器、译码器)
网= encoderDecoderNetwork (inputSize、编码器、译码器、名称、值)
例子
净= encoderDecoderNetwork (inputSize,编码器,译码器)连接编码器网络和解码器网络,创建一个编码器-解码器网络,净.
净= encoderDecoderNetwork (inputSize,编码器,译码器)
净
inputSize
编码器
译码器
该函数需要深度学习工具箱™。
净= encoderDecoderNetwork (inputSize,编码器,译码器,名称,值)使用name-value参数修改编码器-解码器网络的各个方面。
净= encoderDecoderNetwork (inputSize,编码器,译码器,名称,值)
名称,值
全部折叠
这个示例使用:
创建包含四个编码器块的编码器模块。
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像素的输入大小。
[28日28日3]
dlnetwork
编码器网络,指定为dlnetwork(深度学习工具箱)对象。
解码器网络,指定为dlnetwork(深度学习工具箱)对象。网络必须有一个输入和一个输出。
指定可选的用逗号分隔的对名称,值参数。的名字参数是name和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家.
的名字
价值
Name1, Value1,…,的家
“SkipConnections”、“连接”
LatentNetwork
[]
连接编码器和解码器的网络,指定为一层或一组层。
FinalNetwork
连接解码器输出的网络,指定为一层或一组层。如果你指定'OutputChannels,然后在解码器的最后1 × 1卷积层之后连接最终的网络。
OutputChannels
解码器网络的输出通道数,指定为正整数。如果指定此参数,则解码器的最后一层对指定的通道数执行1乘1的卷积操作。
SkipConnectionNames
“汽车”
通过跳过连接合并其激活的编码器/解码器层对的名称,指定为这些值之一。
“汽车”- - -encoderDecoderNetwork函数自动确定编码器/解码器层对的名称。
encoderDecoderNetwork
米-by-2 string array -第一列是编码器层的名称,第二列是相应解码器层的名称。
当你指定'SkipConnections的参数“没有”,encoderDecoderNetwork函数忽略'SkipConnectionNames'.
SkipConnections
“没有”
数据类型:字符|字符串
字符
字符串
“连接”
编码器和解码器网络之间的跳过连接类型,指定为“没有”,“汽车”,或“连接”.
编码器/解码器网络,返回为dlnetwork(深度学习工具箱)对象。
blockedNetwork|pretrainedEncoderNetwork
blockedNetwork
pretrainedEncoderNetwork
您已经有了这个示例的修改版本。要在编辑后打开此示例吗?
您点击了对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在可用的地方获得翻译的内容,并查看当地的事件和提供。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站表现。其他MathWorks国家网站不适合从您的位置访问。
联系当地办事处