DeconvolutionLayer[n,sz]
表示有 n 个输出通道并使用大小为 sz 的内核计算去卷积的可培训的去卷积网络层.
DeconvolutionLayer[n,{s}]
表示执行内核大小为 s 的一维去卷积的层.
DeconvolutionLayer[n,{h,w}]
表示执行内核大小为 h×w 的二维去卷积的层.
DeconvolutionLayer[n,kernel,opts]
包括初始内核和其他参数的选项.
DeconvolutionLayer
DeconvolutionLayer[n,sz]
表示有 n 个输出通道并使用大小为 sz 的内核计算去卷积的可培训的去卷积网络层.
DeconvolutionLayer[n,{s}]
表示执行内核大小为 s 的一维去卷积的层.
DeconvolutionLayer[n,{h,w}]
表示执行内核大小为 h×w 的二维去卷积的层.
DeconvolutionLayer[n,kernel,opts]
包括初始内核和其他参数的选项.
更多信息和选项
- DeconvolutionLayer[…][input] 显式计算把网络层应用到 input 后所得的输出.
- DeconvolutionLayer[…][{input1,input2,…}] 显式计算每个 inputi 的输出.
- 可以包含下列可选参数:
-
"Biases" Automatic 初始的核偏差向量 "ChannelGroups" 1 通道组的数量 "Dilation" 1 膨胀因子 Interleaving False 通道维度的位置 LearningRateMultipliers Automatic 内核权重和/或偏差的学习速率倍增器 PaddingSize 0 从输出去除的填充数 "Stride" 1 使用的卷积步长大小 "Weights" Automatic 初始的核权重矩阵 - PaddingSize 的设置可以是以下格式:
-
n 在每个维度的首尾各裁剪 n 个元素 {n1,n2,…} 用 n 个元素裁剪第 i 个维度的开头和结尾 {{n1,m1},{n2,m2},…} 用开头的 ni 元素和结尾的 mi 元素裁剪第 i 个维度 "Same" 裁剪每个维度,使输出大小等于输入大小乘以步幅 - "Dilation" 和 "Stride" 的设置可以是以下格式:
-
n 对所有维度使用值 n {…,ni,…} 对第 i
维使用值 ni - 通过设置 "ChannelGroups"g,将 m 个输入通道和 n 个输出通道分别划分为 g 个由 m/g 个和 n/g 个通道形成的组,其中 m 和 n 要能被 g 整除. 分别执行连接第 i
组输入通道和第 i
组输出通道的反卷积,并在结果中将结果顺连起来. 每个输入/输出通道组合由 n/g×m/g 反卷积相连,所以设置 "ChannelGroups"g 有效地将不同反卷积的数量从 n×m 减少到 n×m/g. - 在 Automatic 设置下,当使用 NetInitialize 或 NetTrain 时会自动添加权重和偏差.
- 设置 "Biases"->None 指定不使用偏差.
- 当设置为 InterleavingFalse,通道维度是输入和输出数组的第一维.
- 当设置为 InterleavingTrue,通道维度是输入和输出数组的最后一维.
- 如果添加了权重和偏差,DeconvolutionLayer[…][input] 会通过应用层显式计算输出.
- DeconvolutionLayer[…][{input1,input2,…}] 会为每个 inputi 显式计算输出.
- 当 NumericArray 作为输入时,输出将是 NumericArray.
- NetExtract 可用于从一个 DeconvolutionLayer 对象中提取权重和偏差.
- DeconvolutionLayer 通常用于 NetChain、NetGraph 等的内部.
- DeconvolutionLayer 暴露了下列接口以方便 NetGraph 等使用:
-
"Input" 三阶数组 "Output" 三阶数组 - 当不能从一个大型网络中的其它网络层推断出来时,选项 "Input"->{d1,d2,d3} 可被用于修正 DeconvolutionLayer 中输入的维度.
- 给出维度大小为 d1×d2×d3 的输入数组,输出数组的维度大小为
×
×
,其中通道大小
=n 且大小 d2 和 d3 是根据
=s(di-1)+df(k-1)+1-pb-pe 变换得到,其中,df 是膨胀因子,
/
是轴开始/结束时的填充尺寸,k 是内核尺寸,s 是每个维度的步幅尺寸. - Options[DeconvolutionLayer] 给出构建网络层的默认选项的列表. Options[DeconvolutionLayer[…]] 给出在一些数据上运行网络层的默认选项列表.
- Information[DeconvolutionLayer[…]] 给出关于该网络层的报告.
- Information[DeconvolutionLayer[…],prop] 给出 DeconvolutionLayer[…] 的属性 prop 的值. 可能的属性与NetGraph 一样.
范例
打开所有单元 关闭所有单元基本范例 (3)
创建一个有五个输出通道和核的大小为 2×2 的 DeconvolutionLayer:
DeconvolutionLayer[5, {2, 2}]创建一个随机初始化的 DeconvolutionLayer,同时指定输入维度:
deconv = DeconvolutionLayer[1, {2, 2}, "Input" -> {1, 2, 2}]//NetInitializedeconv[{{{1, 1}, {1, -2}}}]//MatrixForm创建一个随机初始化的 DeconvolutionLayer,接受一幅图像,产生一幅图像:
deconv = DeconvolutionLayer[2, {3, 3}, "Input" -> NetEncoder["Image"], "Output" -> NetDecoder["Image"]]//NetInitializedeconv[[image]]deconv[{[image], [image]}]范围 (6)
参数 (3)
创建一个有 2 个输出通道、内核大小为 3 的 DeconvolutionLayer:
DeconvolutionLayer[2, 3]DeconvolutionLayer[2, {3}]DeconvolutionLayer[2, {3, 3}]端口 (3)
指定该层的 "Input" 端口接收大小为 3×64×64 的数组:
DeconvolutionLayer[2, {3, 3}, "Input" -> {3, 64, 64}]DeconvolutionLayer[2, {3, 3}, "Input" -> {3, 64, 64}, "Output" -> {2, 66, 66}]将图像编码器/解码器添加到 "Input" 和 "Output" 端口:
deconv = DeconvolutionLayer[3, {2, 2}, "Input" -> NetEncoder[{"Image", {28, 28}, "Grayscale"}], "Output" -> NetDecoder[{"Image", "RGB"}]]//NetInitializedeconv[[image]]选项 (12)
"Biases" (1)
创建一个没有偏差的随机初始化的 DeconvolutionLayer:
deconv = NetInitialize@DeconvolutionLayer[2, {4, 4}, "Input" -> {1, 40, 40}, "Biases" -> None]NetExtract[deconv, "Biases"]"ChannelGroups" (1)
创建并初始化一个具有多个通道组的 DeconvolutionLayer:
deconv =
NetInitialize@
DeconvolutionLayer[3, {3, 3}, "Input" -> NetEncoder["Image"], "Output" -> NetDecoder["Image"], "ChannelGroups" -> 3]deconv[[image]]```"Dilation" (2)
对给定维度应用大小为 n 的膨胀因子实际上是将内核应用于输出数组的相隔距离为 n 的元素.
创建一个一维的膨胀因子为 2 的 DeconvolutionLayer:
deconv = DeconvolutionLayer["Weights" -> {{{0.5, 0.5}}}, "Biases" -> None, "Dilation" -> 2]deconv[{{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}] // Normal创建一个二维的膨胀因子为 5 的随机 DeconvolutionLayer:
deconv = NetInitialize@DeconvolutionLayer[3, {3, 3}, "Dilation" -> 5, "Input" -> NetEncoder[ "Image"], "Output" -> NetDecoder["Image"]]deconv[[image]]Interleaving (1)
创建一个带有 InterleavingFalse 和一个输入通道的 DeconvolutionLayer:
DeconvolutionLayer[1, 5, "Input" -> {1, 25, 25}, Interleaving -> False]创建一个带有 InterleavingTrue 和一个输入通道的 DeconvolutionLayer:
DeconvolutionLayer[1, 5, "Input" -> {25, 25, 1}, Interleaving -> True]LearningRateMultipliers (1)
创建一个在训练过程中永远不发生变化的 DeconvolutionLayer:
NetInitialize@DeconvolutionLayer[5, {7, 7}, "Input" -> {3, 12, 12}, LearningRateMultipliers -> 0]PaddingSize (4)
DeconvolutionLayer[1, 2, "Input" -> {1, 25, 25}]使用 PaddingSizen 按固定值裁剪:
DeconvolutionLayer[1, 2, "Input" -> {1, 25, 25}, PaddingSize -> 1]DeconvolutionLayer[1, 2, "Input" -> {1, 25, 25}, PaddingSize -> {1, 2}]DeconvolutionLayer[1, 5, "Input" -> {1, 25, 25}, PaddingSize -> 2]这与 PaddingSize "Same" 等价:
deconv = DeconvolutionLayer[1, 5, "Input" -> {1, 25, 25}, PaddingSize -> "Same"]一般来说,PaddingSize "Same" 给出的输出大小等于输入大小乘以步幅:
DeconvolutionLayer[1, 5, "Input" -> {1, 25, 25}, PaddingSize -> "Same", "Stride" -> 2]"Stride" (1)
属性和关系 (1)
下列函数计算了非通道维度
的大小,在给定输入大小和参数的情况下:
outputSize[inputSize_List, kernSize_, stride_, pad_] := (stride * (inputSize - 1) + kernSize - 2 * pad)与大小为 {256,120} 的输入相对应的输出的大小,内核大小为 3,步长为 2,而填充大小为 2:
outputSize[{256, 120}, 3, 2, 2]Information[DeconvolutionLayer[11, 5, "Input" -> {11, 256, 120}, "Stride" -> 3, "PaddingSize" -> 2], "OutputPorts"]技术笔记
相关指南
-
▪
- 神经网络层
文本
Wolfram Research (2016),DeconvolutionLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DeconvolutionLayer.html (更新于 2020 年).
CMS
Wolfram 语言. 2016. "DeconvolutionLayer." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/DeconvolutionLayer.html.
APA
Wolfram 语言. (2016). DeconvolutionLayer. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DeconvolutionLayer.html 年
BibTeX
@misc{reference.wolfram_2026_deconvolutionlayer, author="Wolfram Research", title="{DeconvolutionLayer}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/DeconvolutionLayer.html}", note=[Accessed: 10-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_deconvolutionlayer, organization={Wolfram Research}, title={DeconvolutionLayer}, year={2020}, url={https://reference.wolfram.com/language/ref/DeconvolutionLayer.html}, note=[Accessed: 10-September-2026]}