Conv3D

  • class paddle.fluid.dygraph.Conv3D(num_channels, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype="float32")[源代码]

该接口用于构建 Conv3D 类的一个可调用对象,具体用法参照 代码示例 。3D卷积层(convolution3D layer)根据输入、滤波器(filter)、步长(stride)、填充(padding)、膨胀(dilations)、组数参数计算得到输出。输入和输出是[N, C, D, H, W]的多维tensor,其中N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。卷积三维(Convlution3D)和卷积二维(Convlution2D)相似,但多了一维深度(depth)。如果提供了bias属性和激活函数类型,bias会添加到卷积(convolution)的结果中相应的激活函数会作用在最终结果上。

对每个输入X,有等式:

Conv3D - 图1

  • 其中:
    • Conv3D - 图2 :输入值,NCDHW格式的张量(Tensor)
    • Conv3D - 图3 :滤波器值,MCDHW格式的张量(Tensor)
    • Conv3D - 图4 : 卷积操作
    • Conv3D - 图5 :Bias值,二维张量(Tensor),维度为 [M,1]
    • Conv3D - 图6 :激活函数
    • Conv3D - 图7 :输出值, OutX 的维度可能不同

示例

    • 输入:
    • 输入Tensor的维度:

Conv3D - 图8

滤波器Tensor的维度:

Conv3D - 图9

    • 输出:
    • 输出Tensor的维度:

Conv3D - 图10

其中

Conv3D - 图11

  • 参数:
    • num_channels (int) - 输入图像的通道数。
    • num_fliters (int) - 滤波器(卷积核)的个数。和输出图像通道相同。
    • filter_size (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_D, filter_size_H, filter_size_W)。如果filter_size是一个int型,则filter_size_depth = filter_size_height = filter_size_width = filter_size。
    • stride (int|tuple,可选) - 步长(stride)大小。滤波器和输入进行卷积计算时滑动的步长。如果步长(stride)为元组,则必须包含三个整型数, (stride_D, stride_H, stride_W)。否则,stride_D = stride_H = stride_W = stride。默认值为1。
    • padding (int|tuple,可选) - 填充(padding)大小。padding参数在输入特征层每边添加padding个0。如果填充(padding)为元组,则必须包含三个整型数,(padding_depth, padding_height, padding_width)。否则, padding_depth = padding_height = padding_width = padding。默认值为0。
    • dilation (int|tuple,可选) - 膨胀(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 可视化效果图 较好理解。如果膨胀(dialation)为元组,则必须包含两个整型数, (dilation_D, dilation_H, dilation_W)。否则,dilation_D = dilation_H = dilation_W = dilation。默认值为1。
    • groups (int,可选) - 三维卷积层(Conv3D Layer)的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=2,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认值为1。
    • param_attr (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 ParamAttr
    • bias_attr (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 ParamAttr
    • use_cudnn (bool,可选) - 是否用cudnn内核,只有安装Paddle GPU版时才有效。默认值为True。
    • act (str,可选) - 激活函数类型,如果设为None,则未添加激活函数。默认值为None。
    • dtype (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。

返回:无

代码示例

  1. import paddle.fluid as fluid
  2. import numpy
  3.  
  4. with fluid.dygraph.guard():
  5. data = numpy.random.random((5, 3, 12, 32, 32)).astype('float32')
  6. conv3d = fluid.dygraph.nn.Conv3D(
  7. 'Conv3D', num_filters=2, filter_size=3, act="relu")
  8. ret = conv3d(fluid.dygraph.base.to_variable(data))

属性

  • weight

本层的可学习参数,类型为 Parameter

  • bias

本层的可学习偏置,类型为 Parameter