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] 中,当卷积层在 NetChain、NetGraph 等中相连的情况下,将会由推导得出卷积层的维数.
- 可以包括以下可选参数:
-
"Biases" Automatic 核偏差 (bias) 的初始向量 "ChannelGroups" 1 通道组的数量 "Dilation" 1 扩张因子 "Dimensionality" Automatic 卷积层空间维度的个数 Interleaving False 通道维度的位置 LearningRateMultipliers Automatic 内核权重和/或偏差的学习率乘数 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 个通道形成的组,其中 m 和 n 要能被 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 常被用在 NetChain、NetGraph 等函数中.
- 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)
范围 (11)
端口 (3)
创建初始化的二维 ConvolutionLayer;
创建一个初始化的三维 ConvolutionLayer,其中内核大小为 2:
创建初始化的二维 ConvolutionLayer,接受一个 RGB 图像,然后返回一个 RGB 图像:
ConvolutionLayer 自动线性作用于成批的输入:
参数 (7)
"Biases" (3)
创建无偏差的二维 ConvolutionLayer;
创建具有单位内核的一维 ConvolutionLayer,将偏差应用于仅有的通道:
创建具有单位内核的二维 ConvolutionLayer,将偏差应用于每个通道:
"Weights" (4)
创建一维 ConvolutionLayer,其核可对输入数组中的数据对进行平均处理:
创建一个具有三个输入通道和一个输出通道的二维 ConvolutionLayer,并应用高斯模糊:
创建一个由每个通道高斯核组成的二维 ConvolutionLayer. 首先创建核:
创建一个具有随机内核的二维 ConvolutionLayer:
选项 (12)
"ChannelGroups" (2)
"Dilation" (2)
给定维度上大小为 n 的膨胀因子实际上是对输入数组中相距为 n 的元素应用核:
创建膨胀因子为 2 的一维 ConvolutionLayer;
创建膨胀因子为 5 的随机二维 ConvolutionLayer;
Interleaving (1)
创建一个 ConvolutionLayer,其中 InterleavingFalse 并有一个输入通道:
创建一个 ConvolutionLayer,其中 InterleavingTrue 并有一个输入通道:
PaddingSize (4)
创建一维 ConvolutionLayer,将邻接元素平均,并用 4 个零在各个边上填充:
创建一个随机二维 ConvolutionLayer,用 10 个零对第一个维度的两侧进行填充,用 25 个零对第二个维度的两侧进行填充:
创建一个随机二维 ConvolutionLayer,用 10 个零对第一个维度的开头进行填充,用 20 个零对结尾进行填充:
"Stride" (3)
给定维度上大小为 n 的步长实际上是控制核在输入数组上移动的步长以产生输出数组.
创建一维 ConvolutionLayer,内核接受邻接数对的平均:
创建具有不对称步幅的随机二维 ConvolutionLayer:
属性和关系 (2)
给定输入的大小和参数,可以利用下列函数计算非通道维度 (non-channel) 的大小:
输入的大小为 {256,252}、核的大小为 {2,3}、步长为 2、膨胀因子为 {3,4}、填充数量为 {1,2},计算输出的大小:
ConvolutionLayer 可用来计算二维卷积:
在逆转核以后,等价于 ListConvolve:
可能存在的问题 (3)
文本
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 年