mindspore.ops.interpolate
- mindspore.ops.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None)[源代码]
按照给定的 size 或 scale_factor 根据 mode 设置的插值方式,对输入 input 调整大小。
- 参数:
input (Tensor) - 被调整大小的Tensor。输入向量必须为三维,四维或五维,shape为 \((N, C, [optional D], [optional H], W)\) ,数据类型为float。
size (Union[int, tuple[int], list[int]], 可选) - 目标大小。如果 size 为tuple或list,那么其长度应该和 input 去掉 N, C 的维度相同。 size 和 scale_factor 同时只能指定一个。默认值:
None
。scale_factor (Union[float, tuple[float], list[float]],可选) - 每个维度的缩放系数。如果 scale_factor 为tuple或list,那么其长度应该和 input 去掉 N, C 的维度相同。 size 和 scale_factor 同时只能指定一个。默认值:
None
。mode (str) - 采样算法。以下采样方式的一种,’nearest’(最近邻插值), ‘linear’ (线性插值,仅三维),’bilinear’ (双线性插值,仅四维),’trilinear’(三线性插值,仅五维),’bicubic’ (双三次插值,仅四维),’area’(区域插值),’nearest-exact’(此方法类似于Scikit-Image和PIL最邻插值,可解决一些最邻插值的问题,三维和四维)。默认值:
"nearest"
。align_corners (bool) - 是否使用角对齐进行坐标映射。假设对输入Tensor沿x轴进行变换,具体计算公式如下:
ori_i = new_length != 1 ? new_i * (ori_length - 1) / (new_length - 1) : 0 # 'align_corners' 为 True ori_i = new_length > 1 ? (new_i + 0.5) * ori_length / new_length - 0.5 : 0 # 'align_corners' 为 False
其中, \(ori\_length\) 与 \(new\_length\) 分别表示Tensor在x轴方向上转换前、后的长度, \(new\_i\) 表示转换后沿x轴第i个元素的坐标, \(ori\_i\) 表示沿x轴原始数据的对应坐标。
此选项只对
'linear'
、'bilinear'
和'bicubic'
模式有效,默认值:False
。recompute_scale_factor (bool, 可选) - 重计算 scale_factor 。如果为True,会使用参数 scale_factor 计算参数 size,最终使用 size 的值进行缩放。如果为False,将使用 size 或 scale_factor 直接进行插值。默认值:
None
。
说明
‘nearest-exact’模式与scikit-image和PIL的最近邻插值算法相同。’nearest’模式与OpenCV的INTER_NEAREST插值算法结果相同。
参数支持列表和支持平台:
mode
input.dim
align_corners
scale_factor
device
nearest
3
-
×
Ascend,GPU,CPU
4
-
×
Ascend,GPU,CPU
5
-
√
Ascend,GPU,CPU
linear
3
√
×
Ascend,GPU,CPU
bilinear
4
√
×
Ascend,GPU,CPU
bicubic
4
√
×
Ascend,GPU,CPU
area
3
-
√
Ascend,GPU,CPU
4
-
√
Ascend,GPU,CPU
5
-
√
Ascend,GPU,CPU
nearest-exact
3
-
×
Ascend,CPU
4
-
×
Ascend,CPU
trilinear
5
√
√
Ascend,GPU,CPU
- 表示无此参数。
× 表示当前不支持此参数。
√ 表示当前支持此参数。
- 返回:
调整大小之后的Tensor,维度和数据类型与 input 相同。
- 异常:
TypeError - input 不是Tensor。
ValueError - size 和 scale_factor 都不为空。
ValueError - size 和 scale_factor 都为空。
ValueError - size 为元组或列表类型时长度不等于 input.ndim - 2 。
ValueError - scale_factor 为元组或列表类型时长度不等于 input.ndim - 2 。
ValueError - mode 不在模式支持列表中。
ValueError - input.ndim 不在模式对应维度的支持列表中。
ValueError - size 不为空, recompute_scale_factor 不为空。
ValueError - scale_factor 不在对应的支持列表中。
ValueError - align_corners 不在对应的支持列表中。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor, ops >>> input = Tensor([[[1, 2, 3], [4, 5, 6]]], mindspore.float32) >>> output = ops.interpolate(input, size=(6,), mode='nearest') >>> print(output) [[[1. 1. 2. 2. 3. 3.] [4. 4. 5. 5. 6. 6.]]]