diff --git a/doc/fluid/api_cn/dygraph_cn/Conv2DTranspose_cn.rst b/doc/fluid/api_cn/dygraph_cn/Conv2DTranspose_cn.rst index 4d8373861754a29db379a52827116cc31240f51f..b94773559385ad4f584a98434c6e94584c809b77 100644 --- a/doc/fluid/api_cn/dygraph_cn/Conv2DTranspose_cn.rst +++ b/doc/fluid/api_cn/dygraph_cn/Conv2DTranspose_cn.rst @@ -5,93 +5,81 @@ Conv2DTranspose .. py:class:: paddle.fluid.dygraph.Conv2DTranspose(name_scope, num_filters, output_size=None, filter_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None) +该接口用于构建 ``Conv2DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积转置层(Convlution2D Transpose Layer),其根据输入(input)、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输出特征图个数,C是输入特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。转置卷积的计算过程相当于卷积的反向计算,转置卷积又被称为反卷积(但其实并不是真正的反卷积)。详情请参考: `Conv2DTranspose `_ 。 -2-D卷积转置层(Convlution2D transpose layer) - -该层根据 输入(input)、滤波器(filter)和卷积核膨胀(dilations)、步长(stride)、填充(padding)来计算输出。输入(Input)和输出(Output)为NCHW格式,其中 ``N`` 为batch大小, ``C`` 为通道数(channel),``H`` 为特征高度, ``W`` 为特征宽度。参数(膨胀、步长、填充)分别都包含两个元素。这两个元素分别表示高度和宽度。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数 ``bias_attr`` 和 ``act`` 不为 ``None``,则在卷积的输出中加入偏置,并对最终结果应用相应的激活函数。 - -.. _参考文献: http://www.matthewzeiler.com/wp-content/uploads/2017/07/cvpr2010.pdf - -输入 :math:`X` 和输出 :math:`Out` 函数关系如下: +输入 ``X`` 和输出 ``Out`` 的函数关系如下: .. math:: Out=\sigma (W*X+b)\\ 其中: - - :math:`X` : 输入张量,具有 ``NCHW`` 格式 - - - :math:`W` : 滤波器张量,具有 ``NCHW`` 格式 - - - :math:`*` : 卷积操作 - - - :math:`b` : 偏置(bias),二维张量,shape为 ``[M,1]`` - - - :math:`σ` : 激活函数 - - - :math:`Out` : 输出值,Out和 ``X`` 的 ``shape`` 可能不一样 - -**样例**: + - :math:`X` :输入特征图, ``NCHW`` 格式的 ``Tensor`` + - :math:`W` :滤波器,维度为 [M, C, H, W] 的 ``Tensor`` + - :math:`*` :卷积操作 + - :math:`b` :偏移值,2-D ``Tensor`` ,维度为 ``[M,1]`` + - :math:`\sigma` :激活函数 + - :math:`Out` :输出值, ``Out`` 和 ``X`` 的维度可能不同 -输入: +**输出维度计算示例** -.. math:: +- 输入: - 输入张量的shape : (N,C_{in}, H_{in}, W_{in}) + 输入维度: :math:`(N,C_{in},H_{in},W_{in})` - 滤波器(filter)shape : (C_{in}, C_{out}, H_f, W_f) + 滤波器维度: :math:`(C_{out},C_{in},H_{f},W_{f})` -输出: +- 输出: -.. math:: - 输出张量的 shape : (N,C_{out}, H_{out}, W_{out}) + 输出维度: :math:`(N,C_{out},H_{out},W_{out})` -其中 +- 其中 .. math:: - & H'_{out} = (H_{in}-1)*strides[0]-2*paddings[0]+dilations[0]*(H_f-1)+1\\ - & W'_{out} = (W_{in}-1)*strides[1]-2*paddings[1]+dilations[1]*(W_f-1)+1 \\ - & H_{out}\in[H'_{out},H'_{out} + strides[0])\\ - & W_{out}\in[W'_{out},W'_{out} + strides[1])\\ - - - -参数: - - **name_scope** (str) - 该类的名称 - - **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数( channel )相同 - - **output_size** (int|tuple|None) - 输出图片的大小。如果output_size是一个元组(tuple),则该元形式为(image_H,image_W),这两个值必须为整型。如果output_size=None,则内部会使用filter_size、padding和stride来计算output_size。如果output_size和filter_size是同时指定的,那么它们应满足上面的公式。默认为None。 - - **filter_size** (int|tuple|None) - 滤波器大小。如果filter_size是一个tuple,则形式为(filter_size_H, filter_size_W)。否则,滤波器将是一个方阵。如果filter_size=None,则内部会计算输出大小。默认为None。 - - **padding** (int|tuple) - 填充大小。如果padding是一个元组,它必须包含两个整数(padding_H、padding_W)。否则,padding_H = padding_W = padding。默认:padding = 0。 - - **stride** (int|tuple) - 步长大小。如果stride是一个元组,那么元组的形式为(stride_H、stride_W)。否则,stride_H = stride_W = stride。默认:stride = 1。 - - **dilation** (int|元组) - 膨胀(dilation)大小。如果dilation是一个元组,那么元组的形式为(dilation_H, dilation_W)。否则,dilation_H = dilation_W = dilation_W。默认:dilation= 1。 - - **groups** (int) - Conv2d转置层的groups个数。从Alex Krizhevsky的CNN Deep论文中的群卷积中受到启发,当group=2时,前半部分滤波器只连接到输入通道的前半部分,而后半部分滤波器只连接到输入通道的后半部分。默认值:group = 1。 - - **param_attr** (ParamAttr|None) - conv2d_transfer中可学习参数/权重的属性。如果param_attr值为None或ParamAttr的一个属性,conv2d_transfer使用ParamAttrs作为param_attr的值。如果没有设置的param_attr初始化器,那么使用Xavier初始化。默认值:None。 - - **bias_attr** (ParamAttr|bool|None) - conv2d_tran_bias中的bias属性。如果设置为False,则不会向输出单元添加偏置。如果param_attr值为None或ParamAttr的一个属性,将conv2d_transfer使用ParamAttrs作为,bias_attr。如果没有设置bias_attr的初始化器,bias将初始化为零。默认值:None。 - - **use_cudnn** (bool) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认值:True。 - - **act** (str) - 激活函数类型,如果设置为None,则不使用激活函数。默认值:None。 - - -返回: 存储卷积转置结果的张量。 - -返回类型: 变量(variable) - -抛出异常: - - ``ValueError`` : 如果输入的shape、filter_size、stride、padding和groups不匹配,抛出ValueError + & H'_{out} = (H_{in}-1)*strides[0]-2*paddings[0]+dilations[0]*(H_f-1)+1 + + & W'_{out} = (W_{in}-1)*strides[1]-2*paddings[1]+dilations[1]*(W_f-1)+1 + + & H_{out}\in[H'_{out},H'_{out} + strides[0]) + + & W_{out}\in[W'_{out},W'_{out} + strides[1]) + +参数: + - **name_scope** (str) - 类的名称。 + - **num_filters** (int) - 滤波器的个数,和输出特征图个数相同。 + - **output_size** (int|tuple, 可选) - 输出特征图的大小。如果 ``output_size`` 是一个元组,则必须包含两个整型数,分别表示特征图高度和宽度。如果 ``output_size`` 是整型,表示特征图高度和宽度均为 ``output_size`` 。如果 ``output_size`` 为None,则会根据 ``filter_size`` 、 ``padding`` 和 ``stride`` 来计算 ``output_size`` 。如果 ``output_size`` 和 ``filter_size`` 同时指定,那么它们应满足上面的公式。默认值:None。 + - **filter_size** (int|tuple, 可选) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。如果 ``filter_size`` 为None,则会根据 ``output_size`` 、 ``padding`` 和 ``stride`` 来计算 ``filter_size`` 。默认值:None。 + - **padding** (int|tuple, 可选) - 填充大小。如果 ``padding`` 为元组,则必须包含两个整型数,分别表示竖直和水平边界填充大小。否则,表示竖直和水平边界填充大小均为 ``padding`` 。默认值:0。 + - **stride** (int|tuple, 可选) - 步长大小。如果 ``stride`` 为元组,则必须包含两个整型数,分别表示垂直和水平滑动步长。否则,表示垂直和水平滑动步长均为 ``stride`` 。默认值:1。 + - **dilation** (int|tuple, 可选) - 膨胀系数大小。如果 ``dialation`` 为元组,则必须包含两个整型数,分别表示垂直和水平膨胀系数。否则,表示垂直和水平膨胀系数均为 ``dialation`` 。默认值:1。 + - **groups** (int, 可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的分组卷积:当group=2,滤波器的前一半仅和输入特征图的前一半连接。滤波器的后一半仅和输入特征图的后一半连接。默认值:1。 + - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **bias_attr** (ParamAttr|bool, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **use_cudnn** (bool, 可选) - 是否使用cudnn内核,只有已安装cudnn库时才有效。默认值:True。 + - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。 + +返回:无 **代码示例** .. code-block:: python import paddle.fluid as fluid - import numpy + import numpy as np with fluid.dygraph.guard(): - data = numpy.random.random((3, 32, 32)).astype('float32') + data = np.random.random((3, 32, 32, 5)).astype('float32') conv2DTranspose = fluid.dygraph.nn.Conv2DTranspose( 'Conv2DTranspose', num_filters=2, filter_size=3) ret = conv2DTranspose(fluid.dygraph.base.to_variable(data)) +属性 +:::::::::::: +.. py:attribute:: weight +本层的可学习参数,类型为 ``Parameter`` +.. py:attribute:: bias +本层的可学习偏置,类型为 ``Parameter`` diff --git a/doc/fluid/api_cn/dygraph_cn/Conv2D_cn.rst b/doc/fluid/api_cn/dygraph_cn/Conv2D_cn.rst index 678f7178e25ee1f6ab36d2acb254ecc0c00d947e..95b0a87529b2c02a087746cbc4c97def36d25ee0 100644 --- a/doc/fluid/api_cn/dygraph_cn/Conv2D_cn.rst +++ b/doc/fluid/api_cn/dygraph_cn/Conv2D_cn.rst @@ -5,35 +5,35 @@ Conv2D .. py:class:: paddle.fluid.dygraph.Conv2D(name_scope, 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') -卷积二维层(convolution2D layer)根据输入、滤波器(filter)、步长(stride)、填充(padding)、dilations、一组参数计算输出。输入和输出是NCHW格式,N是批尺寸,C是通道数,H是特征高度,W是特征宽度。滤波器是MCHW格式,M是输出图像通道数,C是输入图像通道数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入图像通道数除以组数的结果。详情请参考UFLDL's : `卷积 `_ 。如果提供了bias属性和激活函数类型,bias会添加到卷积(convolution)的结果中相应的激活函数会作用在最终结果上。 +该接口用于构建 ``Conv2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积层(Convolution2D Layer),其根据输入、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)参数来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输出特征图个数,C是输入特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。详情请参考: `卷积 `_ 。 -对每个输入X,有等式: +对每个输入 ``X`` ,有等式: .. math:: Out = \sigma \left ( W * X + b \right ) 其中: - - :math:`X` :输入值,NCHW格式的张量(Tensor) - - :math:`W` :滤波器值,MCHW格式的张量(Tensor) - - :math:`*` : 卷积操作 - - :math:`b` :Bias值,二维张量(Tensor),shape为 ``[M,1]`` + - :math:`X` :输入特征图, ``NCHW`` 格式的 ``Tensor`` + - :math:`W` :滤波器,维度为 [M, C, H, W] 的 ``Tensor`` + - :math:`*` :卷积操作 + - :math:`b` :偏移值,2-D ``Tensor`` ,维度为 ``[M,1]`` - :math:`\sigma` :激活函数 - - :math:`Out` :输出值,``Out`` 和 ``X`` 的shape可能不同 + - :math:`Out` :输出值, ``Out`` 和 ``X`` 的维度可能不同 -**示例** +**输出维度计算示例** - 输入: - 输入shape::math:`( N,C_{in},H_{in},W_{in} )` + 输入维度: :math:`(N,C_{in},H_{in},W_{in})` - 滤波器shape: :math:`( C_{out},C_{in},H_{f},W_{f} )` + 滤波器维度: :math:`(C_{out},C_{in},H_{f},W_{f})` - 输出: - 输出shape: :math:`( N,C_{out},H_{out},W_{out} )` + 输出维度: :math:`(N,C_{out},H_{out},W_{out})` -其中 +- 其中 .. math:: @@ -42,22 +42,23 @@ Conv2D W_{out} = \frac{\left ( W_{in}+2*paddings[1]-\left ( dilations[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{strides[1]}+1 参数: - - **name_scope** (str) - 该类的名称 - - **num_fliters** (int) - 滤波器数。和输出图像通道相同 - - **filter_size** (int|tuple|None) - 滤波器大小。如果filter_size是一个元组,则必须包含两个整型数,(filter_size,filter_size_W)。否则,滤波器为square - - **stride** (int|tuple) - 步长(stride)大小。如果步长(stride)为元组,则必须包含两个整型数,(stride_H,stride_W)。否则,stride_H = stride_W = stride。默认:stride = 1 - - **padding** (int|tuple) - 填充(padding)大小。如果填充(padding)为元组,则必须包含两个整型数,(padding_H,padding_W)。否则,padding_H = padding_W = padding。默认:padding = 0 - - **dilation** (int|tuple) - 膨胀(dilation)大小。如果膨胀(dialation)为元组,则必须包含两个整型数,(dilation_H,dilation_W)。否则,dilation_H = dilation_W = dilation。默认:dilation = 1 - - **groups** (int) - 卷积二维层(Conv2D Layer)的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=2,滤波器的前一半仅和输入通道的前一半连接。滤波器的后一半仅和输入通道的后一半连接。默认:groups = 1 - - **param_attr** (ParamAttr|None) - conv2d的可学习参数/权重的参数属性。如果设为None或者ParamAttr的一个属性,conv2d创建ParamAttr为param_attr。如果param_attr的初始化函数未设置,参数则初始化为 :math:`Normal(0.0,std)` ,并且std为 :math:`\frac{2.0}{filter\_elem\_num}^{0.5}` 。默认为None - - **bias_attr** (ParamAttr|bool|None) - conv2d bias的参数属性。如果设为False,则没有bias加到输出。如果设为None或者ParamAttr的一个属性,conv2d创建ParamAttr为bias_attr。如果bias_attr的初始化函数未设置,bias初始化为0.默认为None - - **use_cudnn** (bool) - 是否用cudnn核,仅当下载cudnn库才有效。默认:True - - **act** (str) - 激活函数类型,如果设为None,则未添加激活函数。默认:None - - -抛出异常: - - ``ValueError`` - 如果输入shape和filter_size,stride,padding和groups不匹配。 - + - **name_scope** (str) - 类的名称。 + - **num_fliters** (int) - 滤波器的个数,和输出特征图个数相同。 + - **filter_size** (int|tuple) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。 + - **stride** (int|tuple, 可选) - 步长大小。如果 ``stride`` 为元组,则必须包含两个整型数,分别表示垂直和水平滑动步长。否则,表示垂直和水平滑动步长均为 ``stride`` 。默认值:1。 + - **padding** (int|tuple, 可选) - 填充大小。如果 ``padding`` 为元组,则必须包含两个整型数,分别表示竖直和水平边界填充大小。否则,表示竖直和水平边界填充大小均为 ``padding`` 。默认值:0。 + - **dilation** (int|tuple, 可选) - 膨胀系数大小。如果 ``dialation`` 为元组,则必须包含两个整型数,分别表示垂直和水平膨胀系数。否则,表示垂直和水平膨胀系数均为 ``dialation`` 。默认值:1。 + - **groups** (int, 可选) - 二维卷积层的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的分组卷积:当group=2,滤波器的前一半仅和输入特征图的前一半连接。滤波器的后一半仅和输入特征图的后一半连接。默认值:1。 + - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **bias_attr** (ParamAttr|bool, 可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **use_cudnn** (bool, 可选) - 是否用cudnn核,只有已安装cudnn库时才有效。默认值:True。 + - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。 + - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 + +返回:无 + +抛出异常: + - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值 **代码示例** @@ -68,16 +69,19 @@ Conv2D from paddle.fluid.dygraph import Conv2D import numpy as np - data = np.random.uniform( -1, 1, [10, 3, 32, 32] ).astype('float32') + data = np.random.uniform(-1, 1, [10, 3, 32, 32]).astype('float32') with fluid.dygraph.guard(): - conv2d = Conv2D( "conv2d", 2, 3) - data = to_variable( data ) - conv = conv2d( data ) - - - + conv2d = Conv2D("conv2d", 2, 3) + data = to_variable(data) + conv = conv2d(data) +属性 +:::::::::::: +.. py:attribute:: weight +本层的可学习参数,类型为 ``Parameter`` +.. py:attribute:: bias +本层的可学习偏置,类型为 ``Parameter`` diff --git a/doc/fluid/api_cn/dygraph_cn/FC_cn.rst b/doc/fluid/api_cn/dygraph_cn/FC_cn.rst index 5817d0d774990087c8c52abe8ea467e690eac292..8552d51d4ddc1012c6860ab60e8121c9e0ae9dd2 100644 --- a/doc/fluid/api_cn/dygraph_cn/FC_cn.rst +++ b/doc/fluid/api_cn/dygraph_cn/FC_cn.rst @@ -6,13 +6,11 @@ FC .. py:class:: paddle.fluid.dygraph.FC(name_scope, size, num_flatten_dims=1, param_attr=None, bias_attr=None, act=None, is_test=False, dtype='float32') - - **全连接层** -该函数在神经网络中建立一个全连接层。 它可以将一个或多个tensor( ``input`` 可以是一个list或者Variable,详见参数说明)作为自己的输入,并为每个输入的tensor创立一个变量,称为“权”(weights),等价于一个从每个输入单元到每个输出单元的全连接权矩阵。FC层用每个tensor和它对应的权相乘得到形状为[M, size]输出tensor,M是批大小。如果有多个输入tensor,那么形状为[M, size]的多个输出张量的结果将会被加起来。如果 ``bias_attr`` 非空,则会新创建一个偏向变量(bias variable),并把它加入到输出结果的运算中。最后,如果 ``act`` 非空,它也会加入最终输出的计算中。 +该接口用于构建 ``FC`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个全连接层。其输入可以是一个 ``Tensor`` 或多个 ``Tensor`` 组成的list(详见参数说明),该接口会为每个输入的Tensor创建一个权重(weights)变量,即一个从每个输入单元到每个输出单元的全连接权重矩阵。全连接层将每个输入Tensor和其对应的权重(weights)相乘得到shape为 :math:`[N, size]` 的输出Tensor,其中N为batch_size大小。如果有多个输入Tensor,则多个shape为 :math:`[N, size]` 的Tensor计算结果会被累加起来,作为最终输出。如果 ``bias_attr`` 非空,则会创建一个偏置变量(bias Variable),并把它累加到输出结果中。如果 ``act`` 非空,将会在输出结果上应用相应的激活函数。 -当输入为单个张量: +当输入为单个 ``Tensor`` : .. math:: @@ -20,7 +18,7 @@ FC -当输入为多个张量: +当输入为多个 ``Tensor`` 组成的list时: .. math:: @@ -28,42 +26,56 @@ FC 上述等式中: - - :math:`N` :输入的数目,如果输入是变量列表,N等于len(input) - - :math:`X_i` :第i个输入的tensor + - :math:`N` :输入的数目,如果输入是Tensor列表,N等于len(input) + - :math:`X_i` :第i个输入的Tensor - :math:`W_i` :对应第i个输入张量的第i个权重矩阵 - - :math:`b` :该层创立的bias参数 - - :math:`Act` :activation function(激励函数) - - :math:`Out` :输出tensor + - :math:`b` :该层创建的bias参数 + - :math:`Act` :激活函数 + - :math:`Out` :输出Tensor :: + + Case 1: + 给定单个输入Tensor data_1, 且num_flatten_dims = 2: + data_1.data = [[[0.1, 0.2], + [0.3, 0.4]]] + data_1.shape = (1, 2, 2) # 1是batch_size + + fc = FC("fc", 1, num_flatten_dims=2) + out = fc(data_1) + + 则输出为: + out.data = [[0.83234344], [0.34936576]] + out.shape = (1, 2, 1) - Given: + + Case 2: + 给定多个Tensor组成的list: data_1.data = [[[0.1, 0.2], [0.3, 0.4]]] - data_1.shape = (1, 2, 2) # 1 is batch_size + data_1.shape = (1, 2, 2) # 1 是 batch_size data_2 = [[[0.1, 0.2, 0.3]]] data_2.shape = (1, 1, 3) - out = fluid.layers.fc(input=[data_1, data_2], size=2) + fc = FC("fc", 2) + out = fc([data_1, data_2]) - Then: + 则输出为: out.data = [[0.18669507, 0.1893476]] out.shape = (1, 2) - 参数: - - **name_scope** (str) – 该类的名称 - - **size** (int) – 该层输出单元的数目 - - **num_flatten_dims** (int) – fc层可以接受一个维度大于2的tensor。此时, 它首先会被扁平化(flattened)为一个二维矩阵。 参数 ``num_flatten_dims`` 决定了输入tensor的flattened方式: 前 ``num_flatten_dims`` (包含边界,从1开始数) 个维度会被扁平化为最终矩阵的第一维 (维度即为矩阵的高), 剩下的 rank(X) - num_flatten_dims 维被扁平化为最终矩阵的第二维 (即矩阵的宽)。 例如, 假设X是一个五维tensor,其形可描述为[2, 3, 4, 5, 6], 且num_flatten_dims = 3。那么扁平化的矩阵形状将会如此: [2 x 3 x 4, 5 x 6] = [24, 30]。默认为1。 - - **param_attr** (ParamAttr|list of ParamAttr|None) – 该层可学习的参数/权的参数属性 - - **bias_attr** (ParamAttr|list of ParamAttr, default None) – 该层bias变量的参数属性。如果值为False, 则bias变量不参与输出单元运算。 如果值为None,bias变量被初始化为0。默认为 None。 - - **act** (str|None) – 应用于输出的Activation(激励函数) - - **is_test** (bool) – 表明当前执行是否处于测试阶段的标志。默认为False。 - - **dtype** (str) – 权重的数据类型 + - **name_scope** (str) – 类的名称。 + - **size** (int) – 全连接层输出单元的数目,即输出 ``Tensor`` 的特征维度。 + - **num_flatten_dims** (int, 可选) – fc层可以接受一个维度大于2的tensor。此时, 它首先会被扁平化(flattened)为一个二维矩阵。 参数 ``num_flatten_dims`` 决定了输入tensor的flattened方式: 前 ``num_flatten_dims`` (包含边界,从1开始数) 个维度会被扁平化为最终矩阵的第一维 (维度即为矩阵的高), 剩下的 rank(X) - num_flatten_dims 维被扁平化为最终矩阵的第二维 (即矩阵的宽)。 例如, 假设X是一个五维tensor,其形可描述为[2, 3, 4, 5, 6], 且num_flatten_dims = 3。那么扁平化的矩阵形状将会如此: [2 x 3 x 4, 5 x 6] = [24, 30]。默认为1。 + - **param_attr** (ParamAttr|list of ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **bias_attr** (ParamAttr|list of ParamAttr, 可选) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 + - **is_test** (bool, 可选) – 表明当前执行是否处于测试阶段的标志。默认为False。 + - **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。 - -弹出异常:``ValueError`` - 如果输入tensor的维度小于2 +返回:无 **代码示例** @@ -77,9 +89,16 @@ FC data = np.random.uniform( -1, 1, [30, 10, 32] ).astype('float32') with fluid.dygraph.guard(): fc = FC( "fc", 64, num_flatten_dims=2) - data = to_variable( data ) - conv = fc( data ) + data = to_variable(data) + conv = fc(data) + +属性 +:::::::::::: +.. py:attribute:: weight +本层的可学习参数,类型为 ``Parameter`` +.. py:attribute:: bias +本层的可学习偏置,类型为 ``Parameter`` diff --git a/doc/fluid/api_cn/dygraph_cn/Pool2D_cn.rst b/doc/fluid/api_cn/dygraph_cn/Pool2D_cn.rst index ae9834336040eedc3dcd9a85dcfa3e9fa6a3dcf7..e5e41a01b11d6fa30839954dd1d3a12956e0a902 100644 --- a/doc/fluid/api_cn/dygraph_cn/Pool2D_cn.rst +++ b/doc/fluid/api_cn/dygraph_cn/Pool2D_cn.rst @@ -5,27 +5,65 @@ Pool2D .. py:class:: paddle.fluid.dygraph.Pool2D(name_scope, pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True, dtype=VarType.FP32) -pooling2d操作符根据 ``input`` , 池化类型 ``pooling_type`` , 池化核大小 ``ksize`` , 步长 ``strides`` ,填充 ``paddings`` 这些参数得到输出。 +该接口用于构建 ``Pool2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维池化层,并使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` , 步长 ``pool_stride`` ,填充 ``pool_padding`` 这些参数得到输出。 -输入X和输出Out是NCHW格式,N为batch尺寸,C是通道数,H是特征高度,W是特征宽度。 +输入X和输出Out是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数( ``ksize``, ``strides``, ``paddings`` )含有两个整型元素。分别表示高度和宽度上的参数。输入X的大小和输出Out的大小可能不一致。 -参数(ksize,strides,paddings)含有两个元素。这两个元素分别代表高度和宽度。输入X的大小和输出Out的大小可能不一致。 +例如: +输入: + X shape::math:`\left ( N,C,H_{in},W_{in} \right )` -参数: - - **name_scope** (str) - 该类的名称 - - **pool_size** (int|list|tuple) - 池化核的大小。如果它是一个元组或列表,它必须包含两个整数值, (pool_size_Height, pool_size_Width)。其他情况下,若为一个整数,则它的平方值将作为池化核大小,比如若pool_size=2, 则池化核大小为2x2,默认值为-1。 - - **pool_type** (str) - 池化类型,可以是“max”对应max-pooling,“avg”对应average-pooling,默认值为max。 - - **pool_stride** (int|list|tuple) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数,(pool_stride_Height, pool_stride_Width)。否则它是一个整数的平方值。默认值为1。 - - **pool_padding** (int|list|tuple) - 填充大小。如果它是一个元组,它必须包含两个整数值,(pool_padding_on_Height, pool_padding_on_Width)。否则它是一个整数的平方值。默认值为0。 - - **global_pooling** (bool)- 是否用全局池化。如果global_pooling = true, ``ksize`` 和 ``paddings`` 将被忽略。默认值为false - - **use_cudnn** (bool)- 只在cudnn核中用,需要安装cudnn,默认值为True。 - - **ceil_mode** (bool)- 是否用ceil函数计算输出高度和宽度。默认False。如果设为False,则使用floor函数。默认值为false。 - - **exclusive** (bool) - 是否在平均池化模式忽略填充值。默认为True。 +输出: + Out shape::math:`\left ( N,C,H_{out},W_{out} \right )` + +如果 ``ceil_mode`` = false: + +.. math:: + H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0])}{strides[0]} + 1 + +.. math:: + W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1])}{strides[1]} + 1 + +如果 ``ceil_mode`` = true: + +.. math:: + H_{out} = \frac{(H_{in} - ksize[0] + 2 * paddings[0] + strides[0] - 1)}{strides[0]} + 1 + +.. math:: + W_{out} = \frac{(W_{in} - ksize[1] + 2 * paddings[1] + strides[1] - 1)}{strides[1]} + 1 + +如果 ``exclusive`` = false: -返回:池化结果 +.. math:: + hstart &= i * strides[0] - paddings[0] \\ + hend &= hstart + ksize[0] \\ + wstart &= j * strides[1] - paddings[1] \\ + wend &= wstart + ksize[1] \\ + Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{ksize[0] * ksize[1]} -返回类型:变量(Variable) +如果 ``exclusive`` = true: + +.. math:: + hstart &= max(0, i * strides[0] - paddings[0])\\ + hend &= min(H, hstart + ksize[0]) \\ + wstart &= max(0, j * strides[1] - paddings[1]) \\ + wend & = min(W, wstart + ksize[1]) \\ + Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)} + +参数: + - **name_scope** (str) - 该类的名称。 + - **pool_size** (int|list|tuple, 可选) - 池化核的大小。如果它是一个元组或列表,它必须包含两个整数值, (pool_size_Height, pool_size_Width)。若为一个整数,则它的平方值将作为池化核大小,比如若pool_size=2, 则池化核大小为2x2。默认值:-1。 + - **pool_type** (str, 可选) - 池化类型,可以是”max“对应max-pooling,“avg”对应average-pooling。默认为”max“。 + - **pool_stride** (int|list|tuple, 可选) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数,(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上stride均为该值。默认值为1。 + - **pool_padding** (int|list|tuple, 可选) - 填充大小。如果它是一个元组或列表,它必须包含两个整数值,(pool_padding_on_Height, pool_padding_on_Width)。若为一个整数,则表示H和W维度上padding均为该值。默认值为1。 + - **global_pooling** (bool, 可选)- 是否用全局池化。如果global_pooling = True, ``pool_size`` 和 ``pool_padding`` 将被忽略,默认False。 + - **use_cudnn** (bool, 可选)- 是否用cudnn核,只有已安装cudnn库时才有效。默认True。 + - **ceil_mode** (bool, 可选)- 是否用ceil函数计算输出高度和宽度。如果设为False,则使用floor函数。默认为False。 + - **exclusive** (bool, 可选) - 是否在平均池化模式忽略填充值。默认为True。 + - **dtype** (core.VarDesc.VarType, 可选) - 数据类型,可以为float32或float64。默认为float32。 + +返回:无 抛出异常: - ``ValueError`` - 如果 ``pool_type`` 既不是“max”也不是“avg” @@ -36,19 +74,16 @@ pooling2d操作符根据 ``input`` , 池化类型 ``pooling_type`` , 池化 .. code-block:: python - import paddle.fluid as fluid - import numpy - - with fluid.dygraph.guard(): - data = numpy.random.random((3, 32, 32)).astype('float32') - - pool2d = fluid.dygraph.Pool2D("pool2d",pool_size=2, - pool_type='max', - pool_stride=1, - global_pooling=False) - pool2d_res = pool2d(data) - - - + import paddle.fluid as fluid + from paddle.fluid.dygraph.base import to_variable + import numpy as np + + with fluid.dygraph.guard(): + data = np.random.random((3, 32, 32, 5)).astype('float32') + pool2d = fluid.dygraph.Pool2D("pool2d",pool_size=2, + pool_type='max', + pool_stride=1, + global_pooling=False) + pool2d_res = pool2d(to_variable(data)) diff --git a/doc/fluid/api_cn/dygraph_cn/TreeConv_cn.rst b/doc/fluid/api_cn/dygraph_cn/TreeConv_cn.rst index 9e7295532509a4ce29d4a3646648b70eabd9998e..6056729be2f77da881d3e99dfa4180f1fdbe5495 100644 --- a/doc/fluid/api_cn/dygraph_cn/TreeConv_cn.rst +++ b/doc/fluid/api_cn/dygraph_cn/TreeConv_cn.rst @@ -5,25 +5,20 @@ TreeConv .. py:class:: paddle.fluid.dygraph.TreeConv(name_scope, output_size, num_filters=1, max_depth=2, act='tanh', param_attr=None, bias_attr=None, name=None) -基于树结构的卷积Tree-Based Convolution运算。 - -基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。提出 `基于树的卷积论文 `_ +该接口用于构建 ``TreeConv`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个基于树结构的卷积(Tree-Based Convolution)运算。基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。详情请参考: `基于树的卷积论文 `_ 。 参数: - - **name_scope** (str) – 该类的名称 - - **output_size** (int) – 输出特征宽度 - - **num_filters** (int) – filter数量,默认值1 - - **max_depth** (int) – filter的最大深度,默认值2 - - **act** (str) – 激活函数,默认 tanh - - **param_attr** (ParamAttr) – filter的参数属性,默认None - - **bias_attr** (ParamAttr) – 此层bias的参数属性,默认None - - **name** (str) – 此层的名称(可选)。如果设置为None,则将自动命名层,默认为None - - -返回: (Tensor)子树的特征向量。输出张量的形状是[max_tree_node_size,output_size,num_filters]。输出张量可以是下一个树卷积层的新特征向量 + - **name_scope** (str) – 类的名称。 + - **output_size** (int) – 输出特征宽度。 + - **num_filters** (int, 可选) – 滤波器的数量,默认值为1。 + - **max_depth** (int, 可选) – 滤波器的最大深度,默认值为2。 + - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 + - **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **bias_attr** (ParamAttr, 可选) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 + - **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 -返回类型:out(Variable) +返回:无 **代码示例**: @@ -39,9 +34,13 @@ TreeConv 'TreeConv', output_size=6, num_filters=1, max_depth=2) ret = treeConv(fluid.dygraph.base.to_variable(nodes_vector), fluid.dygraph.base.to_variable(edge_set)) +属性 +:::::::::::: +.. py:attribute:: weight +本层的可学习参数,类型为 ``Parameter`` +.. py:attribute:: bias - - +本层的可学习偏置,类型为 ``Parameter``