!27399 add chinese API documentation of Conv1d, Conv2d, Conv3d, etc.

Merge pull request !27399 from wangshuide/code_docs_wsd_master1
This commit is contained in:
i-robot 2021-12-08 05:13:58 +00:00 committed by Gitee
commit aac371543c
15 changed files with 810 additions and 0 deletions

View File

@ -0,0 +1,65 @@
Class mindspore.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, pad_mode='same', padding=0, dilation=1, group=1, has_bias=False, weight_init='normal', bias_init='zeros')
一维卷积层。
在输入Tensor上应用一维卷积该Tensor的shape通常为:math:`(N, C_{in}, W_{in})`,其中:math:`N`是batch size:math:`C_{in}`是通道数。
对于每个batch中的Tensor其shape为 :math:`(C_{in}, W_{in})`,公式定义为:
.. math::
out_j = \sum_{i=0}^{C_{in} - 1} ccor(W_{ij}, X_i) + b_j,
其中,:math:`ccor`为互关联算子,:math:`C_{in}`为输入通道数,:math:`j`的范围从:math:`0`到:math:`C_{out} - 1`:math:`W_{ij}`对应第:math:`j`个过滤器的第:math:`i`个通道,:math:`out_{j}`对应输出的第:math:`j`个通道。
:math:`W_{ij}`是kernel的切片它的shape为:math:`(\text{ks_w})`,其中:math:`\text{ks_w}`是卷积核的宽度。
完整kernel的shape为:math:`(C_{out}, C_{in} // \text{group}, \text{ks_w})`其中group是在通道维度上分割输入 `x` 的组数。
如果'pad_mode'设置为"valid",则输出宽度将为:math:`\left \lfloor{1 + \frac{W_{in} + 2 \times \text{padding} - \text{ks_w} - (\text{ks_w} - 1) \times (\text{dilation} - 1) }{\text{stride}}} \right \rfloor`。
论文`Gradient Based Learning Applied to Document Recognition <http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf>`_ 首次提出卷积层。
参数:
in_channels (int):输入通道数 :math:`C_{in}`。
out_channels (int):输出通道数 :math:`C_{out}`。
kernel_size (int):指定一维卷积核的宽度。
stride (int)步长大小表示移到宽度。默认值1。
pad_mode (str):指定填充模式。可选值为"same"、"valid"、"pad"。默认值:"same"。
- same采用补全方式。输出的宽度与输入 `x` 一致。填充总数将在水平上进行计算。并尽可能均匀分布到左侧和右侧。否则,最后一次将从底部和右侧进行额外的填充。若设置该模式,`padding` 必须为0。
- valid采用的丢弃方式。在不填充的前提下返回可能大的宽度的输出。多余的像素会被丢弃。如果设置此模式则`padding`必须为0。
- pad输入`x`两侧的隐式填充。`padding`的数量将填充到输入Tensor边框上。`padding`必须大于或等于0。
padding (int):输入`x`两侧的隐式填充。默认值0。
dilation (int):指定用于扩张卷积的扩张速率。如果设置为:math:`k > 1`,则每个采样位置都跳过:math:`k - 1`个像素。其值必须大于或等于1并以输入`x`的宽度为界。默认值1。
group (int):将过滤器拆分为组,`in_ channels`和`out_channels`必须可被组数整除。默认值1。
has_bias (bool)指定图层是否使用偏置矢量。默认值False。
weight_init (Union[Tensor, str, Initializer, numbers.Number])卷积核的初始化方法。它可以是Tensorstr初始化实例或numbers.Number。当使用str时可选“TruncatedNormal”“Normal”“Uniform”“HeUniform”和“XavierUniform”分布以及常量“One”和“Zero”分布的值可接受别名“ xavier_uniform”“ he_uniform”“ ones”和“ zeros”。上述字符串大小写均可。更多细节请参考Initializer的值。默认值“normal”。
bias_init (Union[Tensor, str, Initializer, numbers.Number])偏置向量的初始化方法。可以使用的初始化方法和字符串与“weight_init”相同。更多细节请参考Initializer的值。默认值“zeros”。
输入:
- **x** (Tensor)shape为:math:`(N, C_{in}, W_{in})`的Tensor。
输出:
Tensorshape为:math:`(N, C_{out}, W_{out})`。
异常:
TypeError`in_channels`、`out_channels`、`kernel_size`、`stride`、`padding`或`dilation`不是int。
ValueError`in_channels`、`out_channels`、`kernel_size`、`stride`或`dilation`小于1。
ValueError`padding`小于0。
ValueError`pad_mode`不是'same''valid',或'pad'。
支持平台:
``Ascend`` ``GPU`` ``CPU``
样例:
>>> net = nn.Conv1d(120, 240, 4, has_bias=False, weight_init='normal')
>>> x = Tensor(np.ones([1, 120, 640]), mindspore.float32)
>>> output = net(x).shape
>>> print(output)
(1, 240, 640)

View File

@ -0,0 +1,69 @@
Class mindspore.nn.Conv1dTranspose(in_channels, out_channels, kernel_size, stride=1, pad_mode='same', padding=0, dilation=1, group=1, has_bias=False, weight_init='normal', bias_init='zeros')
一维转置卷积层。
计算一维转置卷积,也称为反卷积(实际不是真正的反卷积)。
该算子可以看成Conv1d相对于其输入的梯度。
`x`的shape通常是:math:`(N, C, W)`,其中:math:`N`是batch size:math:`C`是通道数,:math:`W`是特征长度。
对输入填充:math:`dilation * (kernel\_size - 1) - padding`个零。
因此当Conv1d和ConvTranspose1d使用相同的参数初始化时它们的输入和输出shape是互逆的。
但是当stride>1时Conv1d将多个输入的shape映射到同一个输出shape。
输出宽度定义如下:
.. math::
W_{out} = \begin{cases}
(W_{in} - 1) \times \text{stride} - 2 \times \text{padding} + \text{dilation} \times
(\text{ks_w} - 1) + 1, & \text{if pad_mode='pad'}\\
(W_{in} + \text{stride} - 1)/\text{stride}, & \text{if pad_mode='same'}\\
(W_{in} - 1) \times \text{stride} + \text{dilation} \times
(\text{ks_w} - 1) + 1, & \text{if pad_mode='valid'}
\end{cases}
其中:math:`\text{ks_w}`是卷积核的宽度。
参数:
in_channels (int):输入的通道数。
out_channels (int):输出的通道数。
kernel_size (int):指定一维卷积窗口的宽度。
stride (int)步长大小表示移到宽度。默认值1。
pad_mode (str):选择填充模式。可选值为"pad""same""valid"。默认值:"same"。
- same采用补全方式。输出的宽度与输入 `x` 一致。填充总数将在水平上进行计算。并尽可能均匀分布到左侧和右侧。否则,最后一次将从底部和右侧进行额外的填充。若设置该模式,`padding` 必须为0。
- valid采用的丢弃方式。在不填充的前提下返回可能大的宽度的输出。多余的像素会被丢弃。如果设置此模式则`padding`必须为0。
- pad输入`x`两侧的隐式填充。`padding`的数量将填充到输入Tensor边框上。`padding`必须大于或等于0。
padding (int):输入`x`两侧的隐式填充。默认值0。
dilation (int):指定用于扩张卷积的扩张速率。如果设置为:math:`k > 1`,则每个采样位置都跳过:math:`k - 1`个像素。其值必须大于或等于1并以输入`x`的宽度为界。默认值1。
group (int):将过滤器拆分为组,`in_ channels`和`out_channels`必须可被组数整除。当组数>1时不支持Davinci设备。默认值1。
has_bias (bool)指定图层是否使用偏置矢量。默认值False。
weight_init (`Union[Tensor, str, Initializer, numbers.Number]`) 卷积核的初始化方法。它可以是Tensorstr初始化实例或numbers.Number。当使用str时可选“TruncatedNormal”“Normal”“Uniform”“HeUniform”和“XavierUniform”分布以及常量“One”和“Zero”分布的值可接受别名“ xavier_uniform”“ he_uniform”“ ones”和“ zeros”。上述字符串大小写均可。更多细节请参考Initializer的值。默认值“normal”。
bias_init (`Union[Tensor, str, Initializer, numbers.Number]`) 偏置向量的初始化方法。可以使用的初始化方法和字符串与“weight_init”相同。更多细节请参考Initializer的值。默认值“zeros”。
输入:
- **x** (Tensor)shape为:math:`(N, C_{in}, W_{in})`的Tensor。
输出:
Tensorshape为:math:`(N, C_{out}, W_{out})`。
异常:
TypeError`in_channels`、`out_channels`、`kernel_size`、`stride`、`padding`或`dilation`不是int。
ValueError`in_channels`、`out_channels`、`kernel_size`、`stride`或`dilation`小于1。
ValueError`padding`小于0。
ValueError`pad_mode`不是'same''valid',或'pad'。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> net = nn.Conv1dTranspose(3, 64, 4, has_bias=False, weight_init='normal', pad_mode='pad')
>>> x = Tensor(np.ones([1, 3, 50]), mindspore.float32)
>>> output = net(x).shape
>>> print(output)
(1, 64, 53)

View File

@ -0,0 +1,63 @@
Class mindspore.nn.Conv3d(in_channels, out_channels, kernel_size, stride=1, pad_mode='same', padding=0, dilation=1, group=1, has_bias=False, weight_init='normal', bias_init='zeros', data_format='NCDHW')
三维卷积层。
在输入Tensor上应用三维卷积该Tensor的shape通常为:math:`(N, C_{in}, D_{in}, H_{in}, W_{in})`输出shape为:math:`(N, C_{out}, D_{out}, H_{out}, W_{out})`,其中:math:`N`是batch size:math:`C`是通道数。公式定义如下:
.. math::
\operatorname{out}\left(N_{i}, C_{\text {out}_j}\right)=\operatorname{bias}\left(C_{\text {out}_j}\right)+
\sum_{k=0}^{C_{in}-1} ccor(\text {weight}\left(C_{\text {out}_j}, k\right),
\operatorname{input}\left(N_{i}, k\right))
其中 :math:`corr` 是互关联算子。
如果'pad_mode'设置为"valid",则输出深度、高度和宽度将分别为:math:`\left \lfloor{1 + \frac{D_{in} + \text{padding[0]} + \text{padding[1]} - \text{kernel_size[0]} - (\text{kernel_size[0]} - 1) \times (\text{dilation[0]} - 1) }{\text{stride[0]}}} \right \rfloor`、:math:`\left \lfloor{1 + \frac{H_{in} + \text{padding[2]} + \text{padding[3]} - \text{kernel_size[1]} - (\text{kernel_size[1]} - 1) \times (\text{dilation[1]} - 1) }{\text{stride[1]}}} \right \rfloor`和:math:`\left \lfloor{1 + \frac{W_{in} + \text{padding[4]} + \text{padding[5]} - \text{kernel_size[2]} - (\text{kernel_size[2]} - 1) \times (\text{dilation[2]} - 1) }{\text{stride[2]}}} \right \rfloor`。
参数:
in_channels (int):输入通道数 :math:`C_{in}`。
out_channels (int):输出通道数 :math:`C_{out}`。
kernel_size (Union[int, tuple[int]])指定三维卷积窗口的深度、高度和宽度。数据类型为int或包含3个整数的tuple。一个整数表示卷积核的深度、高度和宽度均为该值该值。包含3个整数的tuple分别表示卷积核的深度、高度和宽度。
stride (Union[int, tuple[int]])步长大小。数据类型为整型或3个整型的tuple。一个整数表示在深度、高度和宽度方向的滑动步长均为该值。3个整数的tuple分别表示在深度、高度和宽度方向的滑动步长。默认值1。
pad_mode (str)指定填充模式。可选值为“same”“valid”“pad”。默认值“same”。
- same采用补全方式。输出的深度、高度和宽度与输入 `x` 一致。填充总数将在深度、水平和垂直方向进行计算。并尽可能均匀分布到头部、尾部、顶部、底部、左侧和右侧。否则,最后一次将从尾部、底部和右侧进行额外的填充。若设置该模式,`padding` 必须为0。
- valid采用的丢弃方式。在不填充的前提下返回可能大的深度、高度和宽度的输出。多余的像素会被丢弃。若设置该模式`padding` 必须为0。
- pad输入`x`两侧的隐式填充。`padding`的数量将填充到输入Tensor边框上。`padding`必须大于或等于0。
padding (Union(int, tuple[int])):输入`x`两侧的隐式填充。数据类型为int或包含6个整数的tuple。如果`padding`是一个整数,则头部、尾部、顶部,底部,左边和右边的填充都等于 `padding`。如果`padding`是6个整数的tuple则头部、尾部、顶部、底部、左边和右边的填充分别等于填充padding[0]、padding[1]、padding[2]、padding[3]、padding[4]和padding[5]。默认值0。
dilation (Union[int, tuple[int]])指定用于扩张卷积的扩张速率。数据类型为int或3个整数的tuple: math:`(dilation_d, dilation_h, dilation_w)`。
目前深度扩张仅支持1个用例的情况。如果设置为:math:`k > 1`,则每个采样位置都跳过:math:`k - 1`个像素。其值必须大于或等于1并以输入`x`的深度、高度和宽度为界。默认值1。
group (int):将过滤器拆分为组,`in_ channels`和`out_channels`必须可被组数整除。默认值1。当前仅支持1个。
has_bias (bool)指定图层是否使用偏置矢量。默认值False。
weight_init (Union[Tensor, str, Initializer, numbers.Number])卷积核的初始化方法。它可以是Tensorstr初始化实例或numbers.Number。当使用str时可选“TruncatedNormal”“Normal”“Uniform”“HeUniform”和“XavierUniform”分布以及常量“One”和“Zero”分布的值可接受别名“ xavier_uniform”“ he_uniform”“ ones”和“ zeros”。上述字符串大小写均可。更多细节请参考Initializer的值。默认值“normal”。
bias_init (Union[Tensor, str, Initializer, numbers.Number])偏置向量的初始化方法。可以使用的初始化方法和字符串与“weight_init”相同。更多细节请参考Initializer的值。默认值“zeros”。
data_format (str):数据格式的可选值。目前仅支持'NCDHW'。
输入:
- **x** (Tensor)shape为:math:`(N, C_{in}, D_{in}, H_{in}, W_{in})`的Tensor。
目前输入数据类型只支持float16和float32。
输出:
Tensorshape为:math:`(N, C_{out}, D_{out}, H_{out}, W_{out})`。
异常:
TypeError`in_channels`、`out_channels`或`group`不是int。
TypeError`kernel_size`、`stride`、`padding`或`dilation`既不是int也不是tuple。
ValueError`out_channels`、`kernel_size`、`stride`或`dilation`小于1。
ValueError`padding`小于0。
ValueError`pad_mode`不是“same”“valid”或“pad”。
ValueError`padding`是长度不等于6的tuple。
ValueError`pad_mode`不等于'pad'且`padding`不等于(0, 0, 0, 0, 0, 0)。
ValueError`data_format`不是'NCDHW'。
支持平台:
``Ascend`` ``GPU``
样例:
>>> x = Tensor(np.ones([16, 3, 10, 32, 32]), mindspore.float32)
>>> conv3d = nn.Conv3d(in_channels=3, out_channels=32, kernel_size=(4, 3, 3))
>>> output = conv3d(x)
>>> print(output.shape)
(16, 32, 10, 32, 32)

View File

@ -0,0 +1,103 @@
Class mindspore.nn.Conv3dTranspose(in_channels, out_channels, kernel_size, stride=1, pad_mode='same', padding=0, dilation=1, group=1, output_padding=0, has_bias=False, weight_init='normal', bias_init='zeros', data_format='NCDHW')
三维转置卷积层。
计算三维转置卷积,也称为反卷积(实际不是实际的反卷积)。
转置卷积算子将每个输入元素乘以learnable kernel并把所有输入特征平面的输出相加。
该算子可以看成Conv3d相对于其输入的梯度。
`x`通常shape为:math:`(N, C, D, H, W)`,其中:math:`N`是batch size:math:`C`是通道数,:math:`D`是特征层的深度,:math:`H`是特征高度,:math:`W`是特征层的宽度。
转置卷积的计算过程相当于卷积的反向计算。
对输入填充:math:`dilation * (kernel\_size - 1) - padding`个零。
因此当Conv3d和ConvTranspose3d使用相同的参数初始化时它们的输入和输出shape是互逆的。
但是当stride>1时Conv3d将多个输入的shape映射到同一个输出shape。
ConvTranspose3d提供padding参数增加一侧或多侧计算的输出shape。
输出的高度和宽度定义如下:
如果'pad_mode'设置为"pad"
.. math::
D_{out} = (D_{in} - 1) \times \text{stride_d} - 2 \times \text{padding_d} + \text{dilation_d} \times
(\text{kernel_size_d} - 1) + \text{output_padding_d} + 1
H_{out} = (H_{in} - 1) \times \text{stride_h} - 2 \times \text{padding_h} + \text{dilation_h} \times
(\text{kernel_size_h} - 1) + \text{output_padding_h} + 1
W_{out} = (W_{in} - 1) \times \text{stride_w} - 2 \times \text{padding_w} + \text{dilation_w} \times
(\text{kernel_size_w} - 1) + \text{output_padding_w} + 1
如果'pad_mode'设置为"same"
.. math::
D_{out} = (D_{in} + \text{stride_d} - 1)/\text{stride_d} \\
H_{out} = (H_{in} + \text{stride_h} - 1)/\text{stride_h} \\
W_{out} = (W_{in} + \text{stride_w} - 1)/\text{stride_w}
如果'pad_mode'设置为"valid"
.. math::
D_{out} = (D_{in} - 1) \times \text{stride_d} + \text{dilation_d} \times
(\text{kernel_size_d} - 1) + 1 \\
H_{out} = (H_{in} - 1) \times \text{stride_h} + \text{dilation_h} \times
(\text{kernel_size_h} - 1) + 1 \\
W_{out} = (W_{in} - 1) \times \text{stride_w} + \text{dilation_w} \times
(\text{kernel_size_w} - 1) + 1
参数:
in_channels (int):输入通道数 :math:`C_{in}`。
out_channels (int):输出通道数 :math:`C_{out}`。
kernel_size (Union[int, tuple[int]])指定三维卷积窗口的深度、高度和宽度。数据类型为int或包含3个整数的tuple。一个整数表示卷积核的深度、高度和宽度均为该值该值。包含3个整数的tuple分别表示卷积核的深度、高度和宽度。
stride (Union[int, tuple[int]])步长大小。数据类型为整型或3个整型的tuple。一个整数表示在深度、高度和宽度方向的滑动步长均为该值。3个整数的tuple分别表示在深度、高度和宽度方向的滑动步长。必须大于等于1。默认值1。
pad_mode (str):选择填充模式。可选值为"pad"、"same"、"valid"。默认值:"same"。
- same采用补全方式。输出的深度、高度和宽度与输入 `x` 一致。填充总数将在深度、水平和垂直方向进行计算。并尽可能均匀分布到头部、尾部、顶部、底部、左侧和右侧。否则,最后一次将从尾部、底部和右侧进行额外的填充。若设置该模式,`padding` 和`output_padding`必须为0。
- valid采用的丢弃方式。在不填充的前提下返回可能大的深度、高度和宽度的输出。多余的像素会被丢弃。若设置该模式`padding` 和`output_padding`必须为0。
- pad输入`x`两侧的隐式填充。`padding`的数量将填充到输入Tensor边框上。`padding`必须大于或等于0。
padding (Union(int, tuple[int]))待填充的padding值。数据类型为int或包含6个整数的tuple。如果`padding`是一个整数,则头部、尾部、顶部,底部,左边和右边的填充都等于 `padding`。如果`padding`是6个整数的tuple则头部、尾部、顶部、底部、左边和右边的填充分别等于填充padding[0]、padding[1]、padding[2]、padding[3]、padding[4]和padding[5]。默认值0。
dilation (Union(int, tuple[int]))指定用于扩张卷积的扩张速率。数据类型为int或3个整数的tuple: math:`(dilation_d, dilation_h, dilation_w)`。
目前深度扩张仅支持1个用例的情况。如果设置为:math:`k > 1`,则每个采样位置都跳过:math:`k - 1`个像素。其值必须大于或等于1并以输入`x`的深度、高度和宽度为界。默认值1。
group (int):将过滤器拆分为组,`in_ channels`和`out_channels`必须可被组数整除。默认值1。当前仅支持1个。
output_padding (Union(int, tuple[int]))为输出的每个维度添加额外的大小。默认值0。必须大于或等于0。
has_bias (bool)指定图层是否使用偏置矢量。默认值False。
weight_init (Union[Tensor, str, Initializer, numbers.Number])卷积核的初始化方法。它可以是Tensorstr初始化实例或numbers.Number。当使用str时可选“TruncatedNormal”“Normal”“Uniform”“HeUniform”和“XavierUniform”分布以及常量“One”和“Zero”分布的值可接受别名“ xavier_uniform”“ he_uniform”“ ones”和“ zeros”。上述字符串大小写均可。更多细节请参考Initializer的值。默认值“normal”。
bias_init (Union[Tensor, str, Initializer, numbers.Number])偏置向量的初始化方法。可以使用的初始化方法和字符串与“weight_init”相同。更多细节请参考Initializer的值。默认值“zeros”。
data_format (str):数据格式的可选值。目前仅支持'NCDHW'。
输入:
- **x** (Tensor)shape为:math:`(N, C_{in}, D_{in}, H_{in}, W_{in})`的Tensor。
目前输入数据类型只支持float16和float32。
输出:
Tensorshape为:math:`(N, C_{out}, D_{out}, H_{out}, W_{out})`。
支持平台:
``Ascend`` ``GPU``
异常:
TypeError`in_channels`、`out_channels`或`group`不是int。
TypeErrorkernel_size`、`stride`、`padding`、`dilation`或`output_padding`既不是int也不是tuple。
TypeError输入数据类型不是float16或float32。
ValueError`in_channels`、`out_channels`、`kernel_size`、`stride`或`dilation`小于1。
ValueError`padding`小于0。
ValueError`pad_mode`不是“same”“valid”或“pad”。
ValueError`padding`是长度不等于6的tuple。
ValueError`pad_mode`不等于'pad'且`padding`不等于(0, 0, 0, 0, 0, 0)。
ValueError`data_format`不是'NCDHW'。
样例:
>>> x = Tensor(np.ones([32, 16, 10, 32, 32]), mindspore.float32)
>>> conv3d_transpose = nn.Conv3dTranspose(in_channels=16, out_channels=3, kernel_size=(4, 6, 2),
... pad_mode='pad')
>>> output = conv3d_transpose(x)
>>> print(output.shape)
(32, 3, 13, 37, 33)

View File

@ -0,0 +1,36 @@
Class mindspore.nn.HShrink(lambd=0.5)
按元素计算Hard Shrink函数公式定义如下
.. math::
\text{HardShrink}(x) =
\begin{cases}
x, & \text{ if } x > \lambda \\
x, & \text{ if } x < -\lambda \\
0, & \text{ otherwise }
\end{cases}
参数:
lambd (float)Hard Shrink公式定义的阈值。默认值0.5。
输入:
- **input_x** (Tensor)Hard Shrink的输入数据类型为float16或float32。
输出:
Tensorshape和数据类型与输入相同。
支持平台:
``Ascend``
异常:
TypeError`lambd`不是float。
TypeError`input_x`的dtype既不是float16也不是float32。
示例:
>>> input_x = Tensor(np.array([[ 0.5, 1, 2.0],[0.0533,0.0776,-2.1233]]),mstype.float32)
>>> hshrink = nn.HShrink()
>>> output = hshrink(input_x)
>>> print(output)
[[ 0. 1. 2. ]
[ 0. 0. -2.1233]]

View File

@ -0,0 +1,33 @@
Class mindspore.nn.HSigmoid
Hard Sigmoid激活函数。
按元素计算Hard Sigmoid激活函数。
Hard sigmoid定义为
.. math::
\text{hsigmoid}(x_{i}) = max(0, min(1, \frac{x_{i} + 3}{6})),
其中,:math:`x_i` 是输入Tensor的一个元素。
输入:
- **input_x** (Tensor)Hard Sigmoid的输入。shape为:math:`(N,*)`,其中:math:`*`表示任意的附加维度。
输出:
Tensor数据类型和shape与 `input_x` 的相同。
异常:
TypeError`input_x`不是tensor。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> x = Tensor(np.array([-1, -2, 0, 2, 1]), mindspore.float16)
>>> hsigmoid = nn.HSigmoid()
>>> result = hsigmoid(x)
>>> print(result)
[0.3333 0.1666 0.5 0.8335 0.6665]

View File

@ -0,0 +1,56 @@
Class mindspore.nn.L1Loss(reduction='mean')
L1Loss用于测量:math:`x`和:math:`y`元素之间的平均绝对误差MAE其中:math:`x`是输入Tensor和:math:'y'是标签Tensor。
假设:math:`x`和:math:`y`为一维Tensor长度:math:`N`,则计算:math:`x`和:math:`y`的unreduced loss即reduction参数设置为"none")的公式如下:
.. math::
\ell(x, y) = L = \{l_1,\dots,l_N\}^\top, \quad \text{with } l_n = \left| x_n - y_n \right|,
其中,:math:`N`为batch size。如果`reduction`不是"none",则:
.. math::
\ell(x, y) =
\begin{cases}
\operatorname{mean}(L), & \text{if reduction} = \text{'mean';}\\
\operatorname{sum}(L), & \text{if reduction} = \text{'sum'.}
\end{cases}
参数:
reduction (str)应用于loss的reduction类型。取值为"mean""sum",或"none"。
默认值:"mean"。
输入:
- **logits** (Tensor)shape为:math:`(N, *)`的tensor其中:math:`*`表示任意的附加维度。
- **labels** (Tensor)shape为:math:`(N, *)`的tensor在通常情况下与`logits`的shape相同。
但是如果`logits`和`labels`的shape不同需要保证他们之间可以互相广播。
输出:
Tensor为loss float tensor如果`reduction`为'mean'或'sum'则shape为零如果`reduction`为'none'则输出的shape为广播的shape。
异常:
ValueError`reduction`不为"mean""sum",或"none"。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> #用例1logits.shape = labels.shape = (3,)
>>> loss = nn.L1Loss()
>>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32)
>>> labels = Tensor(np.array([1, 2, 2]), mindspore.float32)
>>> output = loss(logits, labels)
>>> print(output)
0.33333334
>>> #用例2logits.shape = (3,), labels.shape = (2, 3)
>>> loss = nn.L1Loss(reduction='none')
>>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32)
>>> labels = Tensor(np.array([[1, 1, 1], [1, 2, 2]]), mindspore.float32)
>>> output = loss(logits, labels)
>>> print(output)
[[0. 1. 2.]
[0. 0. 1.]]

View File

@ -0,0 +1,32 @@
Class mindspore.nn.LogSigmoid
Log Sigmoid激活函数。
按元素计算Log Sigmoid激活函数。
Log Sigmoid定义为
.. math::
\text{logsigmoid}(x_{i}) = log(\frac{1}{1 + \exp(-x_i)}),
其中,:math:`x_i` 是输入Tensor的一个元素。
输入:
- **x** (Tensor)Log Sigmoid的输入数据类型为float16或float32。shape为:math:`(N,*)`,其中:math:`*`表示任意的附加维度。
输出:
Tensor数据类型和shape与 `x` 的相同。
异常:
TypeError`x`的数据类型既不是float16也不是float32。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> net = nn.LogSigmoid()
>>> x = Tensor(np.array([1.0, 2.0, 3.0]), mindspore.float32)
>>> output = net(x)
>>> print(output)
[-0.31326166 -0.12692806 -0.04858734]

View File

@ -0,0 +1,41 @@
Class mindspore.nn.LogSoftmax(axis=-1)
Log Softmax激活函数。
按元素计算Log Softmax激活函数。
输入经Softmax函数、Log函数转换后值的范围在[-inf,0)。
Log Softmax定义如下
.. math::
\text{logsoftmax}(x_i) = \log \left(\frac{\exp(x_i)}{\sum_{j=0}^{n-1} \exp(x_j)}\right),
其中,:math:`x_i` 是输入Tensor的一个元素。
参数:
axis (int)Log Softmax运算的axis-1表示最后一个维度。默认值-1。
输入:
- **x** (Tensor)Log Softmax的输入数据类型为float16或float32。
输出:
Tensor数据类型和shape与`x`相同,值的范围在[-inf,0)。
异常:
TypeError`axis`不是int。
TypeError`x`的数据类型既不是float16也不是float32。
ValueError`axis`不在[-len(x), len(x))范围中。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> x = Tensor(np.array([[-1.0, 4.0, -8.0], [2.0, -5.0, 9.0]]), mindspore.float32)
>>> log_softmax = nn.LogSoftmax()
>>> output = log_softmax(x)
>>> print(output)
[[-5.00672150e+00 -6.72150636e-03 -1.20067215e+01]
[-7.00091219e+00 -1.40009127e+01 -9.12250078e-04]]

View File

@ -0,0 +1,56 @@
Class mindspore.nn.MAELoss(reduction='mean')
MAELoss用于测量:math:`x`和:math:`y`元素之间的平均绝对误差,其中:math:`x`是输入Tensor:math:`y`是标签Tensor。
假设:math:`x`和:math:`y`为一维Tensor长度:math:`N`,则计算:math:`x`和:math:`y`的unreduced loss即reduction参数设置为"none")的公式如下:
.. math::
\ell(x, y) = L = \{l_1,\dots,l_N\}^\top, \quad \text{with } l_n = \left| x_n - y_n \right|,
其中,:math:`N`为batch size。如果`reduction`不是"none",则:
.. math::
\ell(x, y) =
\begin{cases}
\operatorname{mean}(L), & \text{if reduction} = \text{'mean';}\\
\operatorname{sum}(L), & \text{if reduction} = \text{'sum'.}
\end{cases}
参数:
reduction (str)应用于loss的reduction类型。取值为"mean""sum",或"none"。
默认值:"mean"。
输入:
- **logits** (Tensor)shape为:math:`(M, *)`的tensor其中:math:`*`表示任意的附加维度。
- **labels** (Tensor)shape为:math:`(N, *)`的tensor在通常情况下与`logits`的shape相同。
但是如果`logits`和`labels`的shape不同需要保证他们之间可以互相广播。
输出:
Tensor为加权loss float tensor如果`reduction`为"mean"或"sum"则shape为零如果`reduction`为"none"则输出的shape为输入Tensor广播后的shape。
异常:
ValueError`reduction`不为"mean""sum",或"none"。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> #用例1logits.shape = labels.shape = (3,)
>>> loss = nn.MAELoss()
>>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32)
>>> labels = Tensor(np.array([1, 2, 2]), mindspore.float32)
>>> output = loss(logits, labels)
>>> print(output)
0.33333334
>>> #用例2logits.shape = (3,), labels.shape = (2, 3)
>>> loss = nn.MAELoss(reduction='none')
>>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32)
>>> labels = Tensor(np.array([[1, 1, 1], [1, 2, 2]]), mindspore.float32)
>>> output = loss(logits, labels)
>>> print(output)
[[0. 1. 2.]
[0. 0. 1.]]

View File

@ -0,0 +1,56 @@
Class mindspore.nn.MSELoss(reduction='mean')
MSELoss是用来测量:math:`x`和:math:`y`对应元素之间的均方差,其中:math:`x`是输入Tensor:math:`y`是标签Tensor。
假设:math:`x`和:math:`y`为一维Tensor长度:math:`N`,则计算:math:`x`和:math:`y`的unreduced loss即reduction参数设置为"none")的公式如下:
.. math::
\ell(x, y) = L = \{l_1,\dots,l_N\}^\top, \quad \text{with} \quad l_n = (x_n - y_n)^2.
其中,:math:`N`为batch size。如果`reduction`不是"none",则:
.. math::
\ell(x, y) =
\begin{cases}
\operatorname{mean}(L), & \text{if reduction} = \text{`mean';}\\
\operatorname{sum}(L), & \text{if reduction} = \text{`sum'.}
\end{cases}
参数:
reduction (str)应用于loss的reduction类型。取值为"mean""sum",或"none"。
默认值:"mean"。
输入:
- **logits** (Tensor)shape为:math:`(N, *)`的Tensor其中:math:`*`表示任意的附加维度。
- **labels** (Tensor)shape为:math:`(N, *)`的Tensor在通常情况下与`logits`的shape相同。
但是如果`logits`和`labels`的shape不同需要保证他们之间可以互相广播。
输出:
Tensor为loss float tensor如果`reduction`为"mean"或"sum"则shape为零如果`reduction`为"none"则输出的shape为输入Tensor广播后的shape。
异常:
ValueError`reduction`不为"mean""sum",或"none"。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> #用例1logits.shape = labels.shape = (3,)
>>> loss = nn.MSELoss()
>>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32)
>>> labels = Tensor(np.array([1, 1, 1]), mindspore.float32)
>>> output = loss(logits, labels)
>>> print(output)
1.6666667
>>> #用例2logits.shape = (3,), labels.shape = (2, 3)
>>> loss = nn.MSELoss(reduction='none')
>>> logits = Tensor(np.array([1, 2, 3]), mindspore.float32)
>>> labels = Tensor(np.array([[1, 1, 1], [1, 2, 2]]), mindspore.float32)
>>> output = loss(logits, labels)
>>> print(output)
[[0. 1. 4.] [0. 0. 1.]]

View File

@ -0,0 +1,36 @@
Class mindspore.nn.Sigmoid
Sgmoid激活函数。
按元素计算Sgmoid激活函数。
Sigmoid函数定义为
.. math::
\text{sigmoid}(x_i) = \frac{1}{1 + \exp(-x_i)},
其中:math:`x_i`是输入的元素。
关于Sigmoid的图例见`Sigmoid <https://en.wikipedia.org/wiki/Sigmoid_function#/media/File:Logistic-curve.svg>`_。
输入:
- **x** (Tensor) - 数据类型为float16或float32的Sgmoid输入。
shape为:math:`(N,*)`,其中:math:`*`表示任意的附加维度。
输出:
Tensor数据类型和shape与 `x` 的相同。
异常:
TypeError`x`的数据类型既不是float16也不是float32。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> x = Tensor(np.array([-1, -2, 0, 2, 1]), mindspore.float16)
>>> sigmoid = nn.Sigmoid()
>>> output = sigmoid(x)
>>> print(output)
[0.2688 0.11914 0.5 0.881 0.7305 ]

View File

@ -0,0 +1,33 @@
Class mindspore.nn.Tanh
Tanh激活函数。
按元素计算Tanh函数返回一个新的Tensor该Tensor是输入元素的双曲正切值。
Tanh函数定义为
.. math::
tanh(x_i) = \frac{\exp(x_i) - \exp(-x_i)}{\exp(x_i) + \exp(-x_i)} = \frac{\exp(2x_i) - 1}{\exp(2x_i) + 1},
其中:math:`x_i`是输入Tensor的元素。
输入:
- **x** (Tensor)数据类型为float16或float32的Tanh输入。
shape为:math:`(N,*)`,其中:math:`*`表示任意的附加维度。
输出:
Tensor数据类型和shape与 `x` 的相同。
异常:
TypeError`x`的数据类型既不是float16也不是float32。
支持平台:
``Ascend`` ``GPU`` ``CPU``
示例:
>>> x = Tensor(np.array([1, 2, 3, 2, 1]), mindspore.float16)
>>> tanh = nn.Tanh()
>>> output = tanh(x)
>>> print(output)
[0.7617 0.964 0.995 0.964 0.7617]

View File

@ -0,0 +1,69 @@
mindspore.nn.Conv2d
====================
.. py:class:: mindspore.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, pad_mode="same", padding=0, dilation=1, group=1, has_bias=False, weight_init="normal", bias_init="zeros", data_format="NCHW")
二维卷积层。
对输入Tensor进行二维卷积该Tensor的常见shape为 :math:`(N, C_{in}, H_{in}, W_{in})`,其中 :math:`N` 为batch size:math:`C_{in}` 为通道数,:math:`H_{in},W_{in}` 分别为高度和宽度。对于每个batch中的Tensor其shape为 :math:`(C_{in}, H_{in}, W_{in})` ,二维卷积公式定义如下:
.. math:: out_j = \sum_{i=0}^{C_{in} - 1} ccor(W_{ij}, X_i) + b_j,
其中 :math:`corr` 是互关联算子,:math:`C_{in}` 是输入通道数目,:math:`j` 的范围在 :math:`[0C_{out}-1]` 内,:math:`W_{ij}`对应第 :math:`j`个过滤器的第 :math:`i` 个通道,:math:`out_j`对应输出的第 :math:`j` 个通道。:math:`W_{ij}` 是shape为 :math:`(\text{kernel_size[0]}, \text{kernel_size[1]})` 的kernel切片。其中 :math:`\text{kernel_size[0]}` 和 :math:`\text{kernel_size[1]}` 是卷积核的高度和宽度。完整kernel的shape为 :math:`(C_{out}, C_{in} // \text{group}, \text{kernel_size[0]}, \text{kernel_size[1]})`其中group是在通道维度上分割输入 `x` 的组数。
如果'pad_mode'被设置为 "valid",输出高度和宽度分别为 :math:`\left \lfloor{1 + \frac{H_{in} + \text{padding[0]} + \text{padding[1]} - \text{kernel_size[0]} -
(\text{kernel_size[0]} - 1) \times (\text{dilation[0]} - 1) }{\text{stride[0]}}} \right \rfloor` 和 :math:`\left \lfloor{1 + \frac{W_{in} + \text{padding[2]} + \text{padding[3]} - \text{kernel_size[1]} -
(\text{kernel_size[1]} - 1) \times (\text{dilation[1]} - 1) }{\text{stride[1]}}} \right \rfloor`。
详细介绍请参考论文 `Gradient Based Learning Applied to Document Recognition <http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf>`_ 。
**参数**
- **in_channels** (`int`) 输入的通道数 :math:`C_{in}`。
- **out_channels** (`dict`) - 输出的通道数 :math:`C_{out}`。
- **kernel_size** (`Union[int, tuple[int]]`) 指定二维卷积窗口的高度和宽度。数据类型为整型或2个整型的tuple。一个整数表示卷积核的高度和宽度均为该值。2个整数的tuple分别表示卷积核的高度和宽度。
- **stride** (`Union[int, tuple[int]]`) 步长大小。数据类型为整型或2个整型的tuple。一个整数表示在高度和宽度方向的滑动步长均为该值。2个整数的tuple分别表示在高度和宽度方向的滑动步长。默认值1。
- **pad_mode** (`str`) 指定填充模式。可选值为“same”“valid”“pad”。默认值“same”。
- **same**:采用补全方式。输出的高度和宽度与输入 `x` 一致。填充总数将在水平和垂直方向进行计算。并尽可能均匀分布到顶部、底部、左侧和右侧。否则,最后一次将从底部和右侧进行额外的填充。若设置该模式,`padding` 必须为0。
- **valid**:采用丢弃方式。在不填充的前提下返回可能大的高度和宽度的输出。多余的像素会被丢弃。若设置该模式,`padding` 必须为0。
- **pad**:输入`x`两侧的隐式填充。`padding`的数量将填充到输入Tensor边框上。`padding`必须大于或等于0。
- **padding** (`Union[int, tuple[int]]`) 输入 `x` 两侧的隐式填充。数据类型为int或包含4个整数的tuple。如果 `padding` 是一个整数,那么上、下、左、右的填充都等于 `padding` 。如果 `padding` 是一个有4个整数的tuple那么上、下、左、右的填充分别等于 `padding[0]`、`padding[1]`、`padding[2]` 和 `padding[3]`。默认值0。
- **dilation** (`Union[int, tuple[int]]`) 指定用于扩张卷积的扩张速率。数据类型为整型或具有2个整型的tuple。如果设置 :math:`k > 1`,则每个采样位置将跳过 :math:`k-1` 个像素。其值必须大于或等于1并以输入的高度和宽度为边界。默认值1。
- **group** (`int`) 将过滤器分组, `in_channels` 和 `out_channels` 必须被组数整除。如果组数等于 `in_channels` 和 `out_channels`这个二维卷积层也被称为二维深度卷积层。默认值1.
- **has_bias** (`bool`) 指定图层是否使用偏置向量。默认值False。
- **weight_init** (`Union[Tensor, str, Initializer, numbers.Number]`) 卷积核的初始化方法。它可以是Tensorstr初始化实例或numbers.Number。当使用str时可选“TruncatedNormal”“Normal”“Uniform”“HeUniform”和“XavierUniform”分布以及常量“One”和“Zero”分布的值可接受别名“ xavier_uniform”“ he_uniform”“ ones”和“ zeros”。上述字符串大小写均可。更多细节请参考Initializer的值。默认值“normal”。
- **bias_init** (`Union[Tensor, str, Initializer, numbers.Number]`) 偏置向量的初始化方法。可以使用的初始化方法和字符串与“weight_init”相同。更多细节请参考Initializer的值。默认值“zeros”。
- **data_format** (`str`) 数据格式的可选值有“NHWC”“NCHW”。默认值“NCHW”。
**输入**
- **x** (Tensor) - Shape为 :math:`(N, C_{in}, H_{in}, W_{in})` 或者 :math:`(N, H_{in}, W_{in}, C_{in})` 的Tensor。
**输出**
Tensorshape为 :math:`(N, C_{out}, H_{out}, W_{out})` 或者 :math:`(N, H_{out}, W_{out}, C_{out})` 。
**异常**
- **TypeError** - 如果 `in_channels``out_channels` 或者 `group` 不是整数。
- **TypeError** - 如果 `kernel_size``stride``padding` 或者 `dilation` 既不是整数也不是tuple。
- **ValueError** - 如果 `in_channels``out_channels``kernel_size``stride` 或者 `dilation` 小于1。
- **ValueError** - 如果 `padding` 小于0。
- **ValueError** - 如果 `pad_mode` 不是“same”“valid”“pad”中的一个。
- **ValueError** - 如果 `padding` 是一个长度不等于4的tuple。
- **ValueError** - 如果 `pad_mode` 不等于“pad”且 `padding` 不等于(0,0,0,0)。
- **ValueError** - 如果 `data_format` 既不是“NCHW”也不是“NHWC”。
**支持平台**
`Ascend` `GPU` `CPU`
**样例** :
>>> net = nn.Conv2d(120, 240, 4, has_bias=False, weight_init='normal')
>>> x = Tensor(np.ones([1, 120, 1024, 640]), mindspore.float32)
>>> output = net(x).shape
>>> print(output)
(1, 240, 1024, 640)

View File

@ -0,0 +1,62 @@
mindspore.nn.Conv2dTranspose
============================
.. py:class:: mindspore.nn.Conv2dTranspose(in_channels, out_channels, kernel_size, stride=1, pad_mode="same", padding=0, dilation=1, group=1, has_bias=False, weight_init="normal", bias_init="zeros")
二维转置卷积层。
计算二维转置卷积,这也被称为反卷积(实际不是真正的反卷积)。
`x` 的shape通常为 :math:`(N, C, H, W)` ,其中 :math:`N` 是batch size:math:`C` 是通道数。如果'pad_mode'设为 "pad",输出的高度和宽度分别为:
.. math:: \begin{align}\begin{aligned}H_{out} = (H_{in} - 1) \times \text{stride[0]} - \left (\text{padding[0]} + \text{padding[1]}\right ) + \text{dilation[0]} \times (\text{kernel_size[0]} - 1) + 1\\W_{out} = (W_{in} - 1) \times \text{stride[1]} - \left (\text{padding[2]} + \text{padding[3]}\right ) + \text{dilation[1]} \times (\text{kernel_size[1]} - 1) + 1\end{aligned}\end{align}
其中 :math:`\text{kernel_size[0]}` 是卷积核的高度, :math:`\text{kernel_size[1]}` 是卷积核的宽度。
**参数**
- **in_channels** (`int`) 输入的通道数。
- **out_channels** (`dict`) - 输出的通道数。
- **kernel_size** (`Union[int, tuple[int]]`) 该参数指定二维卷积窗口的高度和宽度。数据类型为整型或2个整型的tuple。一个整数表示卷积核的高度和宽度均为该值。2个整数的tuple分别表示卷积核高度和宽度。
- **stride** (`Union[int, tuple[int]]`) 步长大小。数据类型为整型或2个整型的tuple。一个整数表示在高度和宽度方向的滑动步长均为该值。2个整数的tuple分别表示在高度和宽度方向的滑动步长。默认值1。
- **pad_mode** (`str`) 指定填充模式。可选值为“pad”“same”“valid”。默认值“same”。
- **same**:采用补全方式。输出的高度和宽度与输入 `x` 一致。填充总数将在水平和垂直方向进行计算。并尽可能均匀分布到顶部、底部、左侧和右侧。否则,最后一次将从底部到右侧进行额外的填充。若设置该模式,`padding` 必须为0。
- **valid**:采用丢弃方式。在不填充的前提下返回可能大的高度和宽度的输出。多余的像素会被丢弃。若设置该模式,`padding` 必须为0。
- **pad**:输入`x`两侧的隐式填充。`padding`的数量将填充到输入Tensor边框上。`padding`必须大于或等于0。
- **padding** (`Union[int, tuple[int]]`) 输入 `x` 两侧的隐式填充。数据类型为int或包含4个整数的tuple。如果 `padding` 是一个整数,那么上、下、左、右的填充都等于 `padding` 。如果 `padding` 是一个有4个整数的tuple那么上、下、左、右的填充分别等于 `padding[0]`、`padding[1]`、`padding[2]` 和 `padding[3]`。默认值0。
- **dilation** (`Union[int, tuple[int]]`) 指定用于扩张卷积的扩张速率。数据类型为整型或具有2个整型的tuple。如果设置 :math:`k > 1`,则每个采样位置将跳过 :math:`k-1` 个像素。其值必须大于或等于1并以输入的高度和宽度为边界。默认值1。
- **group** (`int`) 将过滤器分组, `in_channels` 和 `out_channels` 必须被组数整除。当组数大于1时不支持达芬奇Davinci设备。默认值1.
- **has_bias** (`bool`) 指定图层是否使用偏置向量。默认值False。
- **weight_init** (`Union[Tensor, str, Initializer, numbers.Number]`) 卷积核的初始化方法。它可以是Tensorstr初始化实例或numbers.Number。当使用str时可选“TruncatedNormal”“Normal”“Uniform”“HeUniform”和“XavierUniform”分布以及常量“One”和“Zero”分布的值可接受别名“ xavier_uniform”“ he_uniform”“ ones”和“ zeros”。上述字符串大小写均可。更多细节请参考Initializer的值。默认值“normal”。
- **bias_init** (`Union[Tensor, str, Initializer, numbers.Number]`) 偏置向量的初始化方法。可以使用的初始化方法和字符串与“weight_init”相同。更多细节请参考Initializer的值。默认值“zeros”。
**输入**
- **x** (Tensor) - Shape 为 :math:`(N, C_{in}, H_{in}, W_{in})` 的Tensor。
**输出**
Tensorshape为 :math:`(N, C_{out}, H_{out}, W_{out})` 。
**异常**
- **TypeError** - 如果 `in_channels``out_channels` 或者 `group` 不是整数。
- **TypeError** - 如果 `kernel_size``stride``padding` 或者 `dilation` 既不是整数也不是tuple。
- **ValueError** - 如果 `in_channels``out_channels``kernel_size``stride` 或者 `dilation` 小于1。
- **ValueError** - 如果 `padding` 小于0。
- **ValueError** - 如果 `pad_mode` 不是“same”“valid”“pad”中的一个。
- **ValueError** - 如果 `padding` 是一个长度不等于4的tuple。
- **ValueError** - 如果 `pad_mode` 不等于“pad”且 `padding` 不等于(0,0,0,0)。
**支持平台**
`Ascend` `GPU` `CPU`
**样例** :
>>> net = nn.Conv2dTranspose(3, 64, 4, has_bias=False, weight_init='normal', pad_mode='pad')
>>> x = Tensor(np.ones([1, 3, 16, 50]), mindspore.float32)
>>> output = net(x).shape
>>> print(output)
(1, 64, 19, 53)