mindspore.mint.nn.Conv3d

class mindspore.mint.nn.Conv3d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', dtype=None)[源代码]

三维卷积层。

对输入Tensor计算三维卷积。通常,输入Tensor的shape为 (N,Cin,Din,Hin,Win) ,其中 N 为batch size,C 为通道数,D,H,W 分别为特征图的深度、高度和宽度。

根据以下公式计算输出:

out(Ni,Coutj)=bias(Coutj)+k=0Cin1ccor(weight(Coutj,k),X(Ni,k))

其中, bias 为输出偏置,ccorcross-correlation 操作, weight 为卷积核的值, X 为输入的特征图。

  • i 对应batch数,其范围为 [0,N1] ,其中 N 为输入batch。

  • j 对应输出通道,其范围为 [0,Cout1] ,其中 Cout 为输出通道数,该值也等于卷积核的个数。

  • k 对应输入通道数,其范围为 [0,Cin1],其中 Cin 为输入通道数,该值也等于卷积核的通道数。

因此,上面的公式中, bias(Coutj) 为第 j 个输出通道的偏置, weight(Coutj,k) 表示第 j 个卷积核在第 k 个输入通道的卷积核切片, X(Ni,k) 为特征图第 i 个batch第 k 个输入通道的切片。

卷积核shape为 (kernel_size[0],kernel_size[1],kernel_size[2]) ,其中 kernel_size[0]kernel_size[1]kernel_size[2] 分别是卷积核的深度、高度和宽度。若考虑到输入输出通道以及 groups ,则完整卷积核的shape为 (Cout,Cin/groups,kernel_size[0],kernel_size[1],kernel_size[2]) , 其中 groups 是分组卷积时在通道上分割输入 x 的组数。

想更深入了解卷积层,请参考论文 Gradient Based Learning Applied to Document Recognition

参数的约束细节,请参考 mindspore.mint.nn.functional.conv3d()

警告

这是一个实验性API,后续可能修改或删除。

参数:
  • in_channels (int) - Conv3d层输入Tensor的空间维度。

  • out_channels (int) - Conv3d层输出Tensor的空间维度。

  • kernel_size (Union[int, tuple[int]]) - 指定三维卷积核的高度和宽度。数据类型是整数或两个整数的元组。整数表示卷积核的高度和宽度。两个整数的元组分别表示卷积核的高度和宽度。

  • stride (Union[int, tuple[int]],可选) - 三维卷积核的移动步长。数据类型为整型或三个整型的tuple。一个整数表示在深度、高度和宽度方向的移动步长均为该值。三个整数的tuple分别表示在深度、高度和宽度方向的移动步长。默认值: 1

  • padding (Union[int, tuple[int], str],可选) - 输入的深度、高度和宽度方向上的填充数。数据类型是整数或字符串{ validsame }或三个整数的元组。该值应大于或等于0。默认值: 0

    • "same":在输入的边缘加上衬垫,这样当 stride 设置为“1”时,输入和输出的形状是相同的。填充量由运算符内部计算。如果填充量是偶数,则均匀分布在输入周围,如果填充量为奇数,则多余的填充量会流向右侧/底部。 如果设置了此模式,则 padding 必须为0。

    • "valid":输入没有填充,输出返回最大可能的高度和宽度。无法完成整个步幅的额外像素将被丢弃。如果设置了此模式,则 padding 必须为0。

  • padding_mode (str,可选) - 使用填充值0指定填充模式。它可以设置为: "zeros""reflect""circular""replicate" 。默认值: "zeros"

  • dilation (Union[int, tuple[int]],可选) - 控制内核点之间的空间。默认值: 1

  • groups (int,可选) - 拆分过滤成组, in_channelout_channels 必须能被 groups 整除。如果组等于 in_channelsout_channels 。默认值: 1

  • bias (bool,可选) - Conv3d层是否具有偏置参数。默认值: True

  • dtype (mindspore.dtype,可选) - Parameters的dtype。默认值: mstype.float32

输入:
  • x (Tensor) - shape为 (N,Cin,Din,Hin,Win)(Cin,Din,Hin,Win) 的Tensor。

输出:

Tensor,shape为 (N,Cout,Dout,Hout,Wout)(Cout,Dout,Hout,Wout)

padding为 "same" 时:

Dout=Dinstride[0]Hout=Hinstride[1]Wout=Winstride[2]

padding为 "valid" 时:

Dout=Dindilation[0]×(kernel_size[0]1)stride[0]+1Hout=Hindilation[1]×(kernel_size[1]1)stride[1]+1Wout=Windilation[2]×(kernel_size[2]1)stride[2]+1
异常:
  • TypeError - in_channelsout_channelsgroups 不是int。

  • TypeError - kernel_sizestridepaddingdilation 既不是int也不是tuple。

  • ValueError - in_channelsout_channelskernel_sizestridedilation 小于1。

  • ValueError - padding 小于0。

支持平台:

Ascend

样例:

>>> import mindspore
>>> from mindspore import Tensor, mint
>>> import numpy as np
>>> net = mint.nn.Conv3d(120, 10, 4)
>>> x = Tensor(np.ones([1, 120, 10, 23, 34]), mindspore.float32)
>>> output = net(x).shape
>>> print(output)
(1, 10, 7, 20, 31)