# 使用mindspore.ops.interpolate报错ValueError:For "scale\_factor" option cannot currentiy be set with the mode = bilinear = 4D

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): CPU

软件环境: MindSpore 版本: 2.0

执行模式（静态图/动态图）： 不限

Python 版本: 3.9

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

img是三维的，（C，H，W），unsqueeze转换成4维后，想用bilinear模式的interpolate，但是却报错说不能设置 scale\_factor。

2.2 报错信息

```
ValueError:For "interpolate" , "scale_factor" option cannot currentiy be set with the mode = bilinear and dim = 4D
```

2.3 脚本信息

```
import mindspore
from mindspore import Tensor, ops
import numpy as np
img = np.random.randn(3, 128, 128)
input = Tensor(img, mindspore.float32)
output = ops.interpolate(input.unsqueeze(0), mode='bilinear', scale_factor=2.0)
print(output)
```

**3. 根因分析**

查看文档：https://mindspore.cn/docs/zh-CN/r2.0/api\_python/ops/mindspore.ops.interpolate.html?highlight=interpolate\#mindspore.ops.interpolate

bilinear 模式下支持4d ，但是不支持scale\_factor。

**4. 解决方案**

不支持scale\_factor，但是size还是支持的。

```
mindspore.ops.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None)
```

按照给定的 size 或 scale\_factor 根据 mode 设置的插值方式，对输入 input 调整大小。

size \(Union\[int, tuple\[int\], list\[int\]\], 可选\) - 目标大小。如果 size 为tuple或list，那么其长度应该和 input 去掉 N, C 的维度相同。 size 和 scale\_factor 同时只能指定一个。默认值：None。

所以可以设置size，一样可以达到缩放的效果。

```
import mindspore
from mindspore import Tensor, ops
import numpy as np
img = np.random.randn(3, 128, 128)
input = Tensor(img, mindspore.float32)
output = ops.interpolate(input.unsqueeze(0), mode='bilinear',  size=256)
print(output.shape)
```

