mindspore/docs/api/api_python/ops/mindspore.ops.Squeeze.rst

48 lines
1.8 KiB
ReStructuredText
Raw Normal View History

2021-12-07 12:17:56 +08:00
mindspore.ops.Squeeze
=====================
.. py:class:: mindspore.ops.Squeeze(axis=())
返回删除指定 `axis` 中大小为1的维度的Tensor。
如果指定了 `axis`,则删除指定 `axis` 中大小为1的维度。
如果 `axis` 为None则删除所有大小为1的维度。
例如如果输入的shape为(A×1×B×C×1×D)则输出的Tensor的shape为(A×B×C×D)如果指定维度squeeze操作仅在指定维度中进行。
如果输入的shape为(A×1×B)squeeze(input_x, 0)不会改变输入的Tensor但squeeze(input_x, 1)会使输入Tensor的shape变为(A×B)。
请注意在动态图模式下输出Tensor将与输入Tensor共享数据并且没有Tensor数据复制过程。
.. note::
维度索引从0开始并且必须在 `[-input_x.ndim, input_x.ndim)` 范围内。
**参数:**
**axis** (Union[int, tuple(int)]) - 指定待删除shape的维度索引它会删除该维度中所有大小为1的维度。如果指定了维度索引其数据类型必须为int32或int64。默认值()空tuple。
**输入:**
**input_x** (Tensor) - 用于计算Squeeze的输入Tensorshape为 :math:`(x_1, x_2, ..., x_R)`
**输出:**
Tensorshape为 :math:`(x_1, x_2, ..., x_S)`
**异常:**
- **TypeError** - `axis` 既不是int也不是tuple。
- **TypeError** - `axis` 是tuple其元素并非全部是int。
- **ValueError** - 指定 `axis` 的对应维度不等于1。
**支持平台:**
``Ascend`` ``GPU`` ``CPU``
**样例:**
>>> input_x = Tensor(np.ones(shape=[3, 2, 1]), mindspore.float32)
>>> squeeze = ops.Squeeze(2)
>>> output = squeeze(input_x)
>>> print(output)
[[1. 1.]
[1. 1.]
[1. 1.]]