mindspore2022/docs/api/api_python/nn/mindspore.nn.Pad.rst

42 lines
2.4 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

mindspore.nn.Pad
=================
.. py:class:: mindspore.nn.Pad(paddings, mode='CONSTANT')
根据 `paddings``mode` 对输入进行填充。
**参数:**
- **paddings** (tuple) - 填充大小其shape为(N, 2)N是输入数据的维度填充的元素为int类型。对于 `x` 的第 `D` 个维度paddings[D, 0]表示要在输入Tensor的第 `D` 个维度之前扩展的大小paddings[D, 1]表示在输入Tensor的第 `D` 个维度后面要扩展的大小。每个维度填充后的大小为: :math:`paddings[D, 0] + input\_x.dim\_size(D) + paddings[D, 1]`
.. code-block::
# 假设参数和输入如下:
mode = "CONSTANT".
paddings = [[1,1], [2,2]].
x = [[1,2,3], [4,5,6], [7,8,9]].
# `x` 的第一个维度为3 `x` 的第二个维度为3。
# 根据以上公式可得:
# 输出的第一个维度是paddings[0][0] + 3 + paddings[0][1] = 1 + 3 + 1 = 5。
# 输出的第二个维度是paddings[1][0] + 3 + paddings[1][1] = 2 + 3 + 2 = 7。
# 所以最终的输出shape为(5, 7)
- **mode** (str) - 指定填充模式。取值为"CONSTANT""REFLECT""SYMMETRIC"。默认值:"CONSTANT"。
**输入:**
- **x** (Tensor) - 输入Tensor。
**输出:**
Tensor填充后的Tensor。
- 如果 `mode` 为"CONSTANT" `x` 使用0进行填充。例如 `x` 为[[1,2,3][4,5,6][7,8,9]] `paddings` 为[[1,1][2,2]],则输出为[[0,0,0,0,0,0,0][0,0,1,2,3,0,0][0,0,4,5,6,0,0][0,0,7,8,9,0,0][0,0,0,0,0,0,0]]。
- 如果 `mode` 为"REFLECT" `x` 使用对称轴进行对称复制的方式进行填充(复制时不包括对称轴)。例如 `x` 为[[1,2,3][4,5,6][7,8,9]] `paddings` 为[[1,1][2,2]],则输出为[[6,5,4,5,6,5,4][3,2,1,2,3,2,1][6,5,4,5,6,5,4][9,8,7,8,9,8,7][6,5,4,5,6,5,4]]。
- 如果 `mode` 为"SYMMETRIC",此填充方法类似于"REFLECT"。也是根据对称轴填充,包含对称轴。例如 `x` 为[[1,2,3][4,5,6][7,8,9]] `paddings` 为[[1,1][2,2]],则输出为[[2,1,1,2,3,3,2][2,1,1,2,3,3,2][5,4,4,5,6,6,5][8,7,7,8,9,9,8][8,7,7,8,9,9,8]]。
**异常:**
- **TypeError** - `paddings` 不是tuple。
- **ValueError** - `paddings` 的长度超过4或其shape不是(N, 2)。
- **ValueError** - `mode` 不是'CONSTANT''REFLECT'或'SYMMETRIC'。