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,有等式:
其中:
-
:输入值,NCDHW格式的张量(Tensor)
-
:滤波器值,MCDHW格式的张量(Tensor)
-
: 卷积操作
-
:Bias值,二维张量(Tensor),维度为
[M,1]
-
:激活函数
OutOut :输出值,
Out
和X
的维度可能不同
示例
输入:
输入Tensor的维度: [N,Cin,Din,Hin,Win][N,Cin,Din,Hin,Win]
滤波器Tensor的维度: [Cout,Cin,Df,Hf,Wf][Cout,Cin,Df,Hf,Wf]
输出:
输出Tensor的维度: [N,Cout,Dout,Hout,Wout][N,Cout,Dout,Hout,Wout]
其中
DoutHoutWout\=(Din+2∗paddings[0]−(dilations[0]∗(Df−1)+1))strides[0]+1\=(Hin+2∗paddings[1]−(dilations[1]∗(Hf−1)+1))strides[1]+1\=(Win+2∗paddings[2]−(dilations[2]∗(Wf−1)+1))strides[2]+1Dout\=(Din+2∗paddings[0]−(dilations[0]∗(Df−1)+1))strides[0]+1Hout\=(Hin+2∗paddings[1]−(dilations[1]∗(Hf−1)+1))strides[1]+1Wout\=(Win+2∗paddings[2]−(dilations[2]∗(Wf−1)+1))strides[2]+1
参数:
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”。
返回:无
代码示例:
import paddle.fluid as fluid
import numpy
with fluid.dygraph.guard():
data = numpy.random.random((5, 3, 12, 32, 32)).astype('float32')
conv3d = fluid.dygraph.nn.Conv3D(
'Conv3D', num_filters=2, filter_size=3, act="relu")
ret = conv3d(fluid.dygraph.base.to_variable(data))
属性
weight
本层的可学习参数,类型为 Parameter
bias
本层的可学习偏置,类型为 Parameter