ConvolutionLayer

ConvolutionLayer[n,s]

表示可训练的卷积层,具有 n 个输出通道并使用大小为 s 的核计算卷积.

ConvolutionLayer[n,{s}]

表示一个网络层,用大小为 s 的核进行一维卷积计算.

ConvolutionLayer[n,{h,w}]

表示使用大小为 h×w 的核进行二维卷积计算的网络层.

ConvolutionLayer[n,{h,w,d}]

表示核大小为 h×w×d 的二维卷积.

ConvolutionLayer[n,kernel,opts]

包括填充和其他参数的选项.

更多信息和选项

  • ConvolutionLayer[n,] 表示一个网络层,应用于有 m 个输入通道和一个或更多空间维度的输入数组,在空间维度上进行 n×m 个不同的卷积计算,产生有 n 个通道的输出数组.
  • ConvolutionLayer[][input] 把层应用到 input 显式计算输出.
  • ConvolutionLayer[][{input1,input2,}] 显式计算每个 inputi 的输出.
  • ConvolutionLayer[n,s] 中,当卷积层在 NetChainNetGraph 等中相连的情况下,将会由推导得出卷积层的维数.
  • 可以包括以下可选参数:
  • "Biases"Automatic核偏差 (bias) 的初始向量
    "ChannelGroups" 1通道组的数量
    "Dilation" 1扩张因子
    "Dimensionality"Automatic卷积层空间维度的个数
    Interleaving False通道维度的位置
    LearningRateMultipliersAutomatic内核权重和/或偏差的学习率乘数
    PaddingSize 0应用到输入的零填充的数量
    "Stride" 1使用的卷积步长
    "Weights"Automatic核权重的初始数组
  • PaddingSize 的设置可以为以下形式:
  • n在每个维度的开头和结尾用 n 个零进行填充
    {n1,n2,}在第 i 个维度的开头和结尾用 n 个零进行填充
    {{n1,m1},{n2,m2},}在第 i 个维度的开头用 ni 个零进行填充,在结尾用 mi 个零进行填充
    "Same"填充每个维度,使输出大小等于输入大小除以步幅(向上取整)
  • "Dilation""Stride" 的设置可以为以下形式:
  • n对所有维度都使用值 n
    {,ni,}对第 i 个维度使用值 ni
  • 通过设置 "ChannelGroups"g,将 m 个输入通道和 n 个输出通道分别划分为 g 个由 m/g 个和 n/g 个通道形成的组,其中 mn 要能被 g 整除. 分别执行连接第 i 组输入通道和第 i 组输出通道的卷积,并在结果中将结果顺连起来. 每个输入/输出通道组合由 n/g×m/g 卷积相连,所以设置 "ChannelGroups"g 有效地将不同卷积的数量从 n×m 减少到 n×m/g.
  • 设置 "Biases"None 指定不应使用偏差.
  • 当设置为 InterleavingFalse,通道维数被作为输入和输出数组的第一个维度.
  • 当设置为 InterleavingTrue,通道维数被作为输入和输出数组的最后一个维度.
  • 如果加上权重和偏差, ConvolutionLayer[][input] 会根据对网络层的应用明确计算输出.
  • ConvolutionLayer[][{input1,input2,}] 对每个 inputi 明确计算输出.
  • NetExtract 可用来从 ConvolutionLayer 对象提取权重和偏差.
  • ConvolutionLayer 常被用在 NetChainNetGraph 等函数中.
  • ConvolutionLayer 开放下列端口以便在 NetGraph 等中使用:
  • "Input"2、3 或 4 阶的数组
    "Output"2、3 或 4 阶的数组
  • ConvolutionLayer 可对含有 "Varying" 维度的数组进行运算.
  • 在较大的网络中,当不能从其他层推断出时,可利用选项 ConvolutionLayer[][input] 来确定 ConvolutionLayer 的输入维度.
  • 给定维度为 d1××di× 的输入数组,则会得到维度为 ××× 的输出数组,其中通道维度 =n,按照 来转换得到 di 的大小,其中 / 是 axis 的开头/结尾处的填充的大小, 是核的大小, 是步长, 是每个维度的膨胀因子.
  • Options[ConvolutionLayer] 给出构造层的默认选项列表. Options[ConvolutionLayer[]] 提供用于在某些数据上运算网络层的默认选项列表.
  • Information[ConvolutionLayer[]] 提供有关该层的报告.
  • Information[ConvolutionLayer[],prop] 给出 ConvolutionLayer[]的属性 prop 的值. 可能的属性NetGraph 相同.

范例

打开所有单元关闭所有单元

基本范例  (2)

创建一个有 2 个输出通道和核的大小为 4 的一维 ConvolutionLayer

创建并初始化一维 ConvolutionLayer

对输入矩阵应用该层:

范围  (11)

端口  (3)

创建初始化的二维 ConvolutionLayer

将层应用于输入数组:

输出也是三阶数组:

创建一个初始化的三维 ConvolutionLayer,其中内核大小为 2:

把该层应用到输入数组:

创建初始化的二维 ConvolutionLayer,接受一个 RGB 图像,然后返回一个 RGB 图像:

将层应用于图像:

ConvolutionLayer 自动线性作用于成批的输入:

参数  (7)

"Biases"  (3)

创建无偏差的二维 ConvolutionLayer

创建具有单位内核的一维 ConvolutionLayer,将偏差应用于仅有的通道:

将层应用于输入:

创建具有单位内核的二维 ConvolutionLayer,将偏差应用于每个通道:

对图像应用该层:

"Weights"  (4)

创建一维 ConvolutionLayer,其核可对输入数组中的数据对进行平均处理:

将层应用于输入:

创建一个具有三个输入通道和一个输出通道的二维 ConvolutionLayer,并应用高斯模糊:

对图像应用该层:

创建一个由每个通道高斯核组成的二维 ConvolutionLayer. 首先创建核:

可视化内核:

使用内核初始化网络:

对图像应用该层:

创建一个具有随机内核的二维 ConvolutionLayer

对图像应用该层:

选项  (12)

"ChannelGroups"  (2)

创建具有三个通道组的二维 ConvolutionLayer

使用通道组将卷积权重的数量减少了等于组数的因子. 检查权重的维数:

与具有一个通道组的类似层的权重维数进行比较:

"Dilation"  (2)

给定维度上大小为 n 的膨胀因子实际上是对输入数组中相距为 n 的元素应用核:

创建膨胀因子为 2 的一维 ConvolutionLayer

对输入应用该层:

创建膨胀因子为 5 的随机二维 ConvolutionLayer

对图像应用膨胀卷积层:

Interleaving  (1)

创建一个 ConvolutionLayer,其中 InterleavingFalse 并有一个输入通道:

创建一个 ConvolutionLayer,其中 InterleavingTrue 并有一个输入通道:

PaddingSize  (4)

创建一维 ConvolutionLayer,将邻接元素平均,并用 4 个零在各个边上填充:

将层应用于输入:

创建一个随机二维 ConvolutionLayer,用 10 个零对第一个维度的两侧进行填充,用 25 个零对第二个维度的两侧进行填充:

创建一个随机二维 ConvolutionLayer,用 10 个零对第一个维度的开头进行填充,用 20 个零对结尾进行填充:

利用填充使得输出维度等于输出维度:

这样就可以定义含有任意数量的卷积层的深层网络,同时,输出的高度和宽度不必趋向于 1.

"Stride"  (3)

给定维度上大小为 n 的步长实际上是控制核在输入数组上移动的步长以产生输出数组.

创建一维 ConvolutionLayer,内核接受邻接数对的平均:

将层应用于输入:

步长为 2,对不重叠的数据对应用核:

步长为 4,每隔一个数据对应用核:

创建具有不对称步幅的随机二维 ConvolutionLayer

对图像应用该层:

使用较大的步长以减小输出的维度:

增大步长还可以减少计算时间:

属性和关系  (2)

给定输入的大小和参数,可以利用下列函数计算非通道维度 (non-channel) 的大小:

输入的大小为 {256,252}、核的大小为 {2,3}、步长为 2、膨胀因子为 {3,4}、填充数量为 {1,2},计算输出的大小:

ConvolutionLayer 可用来计算二维卷积:

在逆转核以后,等价于 ListConvolve

可能存在的问题  (3)

ConvolutionLayer 已知其输入和输出的尺寸之前无法初始化:

ConvolutionLayer 不能接受符号输入:

核的尺寸不能大于输入维度:

Wolfram Research (2016),ConvolutionLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ConvolutionLayer.html (更新于 2021 年).

文本

Wolfram Research (2016),ConvolutionLayer,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ConvolutionLayer.html (更新于 2021 年).

CMS

Wolfram 语言. 2016. "ConvolutionLayer." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/ConvolutionLayer.html.

APA

Wolfram 语言. (2016). ConvolutionLayer. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ConvolutionLayer.html 年

BibTeX

@misc{reference.wolfram_2024_convolutionlayer, author="Wolfram Research", title="{ConvolutionLayer}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/ConvolutionLayer.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_convolutionlayer, organization={Wolfram Research}, title={ConvolutionLayer}, year={2021}, url={https://reference.wolfram.com/language/ref/ConvolutionLayer.html}, note=[Accessed: 22-November-2024 ]}