1 系统环境
硬件环境(Ascend/GPU/CPU): Ascend/GPU/CPU
MindSpore版本: mindspore=1.10.0;mindvision=0.1.0
执行模式(PyNative/ Graph):不限
Python版本: Python=3.7.10
操作系统平台: 不限
2 报错信息
2.1脚本信息
from mindvision.dataset import Mnist
download_train = Mnist(path="./mnist", split="train", resize=32, download=True)
download_eval = Mnist(path="./mnist", split="test", resize=32, download=True)
dataset_train = download_train.run()
dataset_eval = download_eval.run() 复制
2.2报错信息
[WARNING] ME(2285:140565113722688,MainProcess):2023-10-07-11:49:35.271.471 [mindspore/dataset/core/validator_helpers.py:806] 'Resize' from mindspore.dataset.vision.c_transforms is deprecated from version 1.8 and will be removed in a future version. Use 'Resize' from mindspore.dataset.vision instead.
[WARNING] ME(2285:140565113722688,MainProcess):2023-10-07-11:49:35.272.486 [mindspore/dataset/core/validator_helpers.py:806] 'Rescale' from mindspore.dataset.vision.c_transforms is deprecated from version 1.8 and will be removed in a future version. Use 'Rescale' from mindspore.dataset.vision instead.
[WARNING] ME(2285:140565113722688,MainProcess):2023-10-07-11:49:35.273.343 [mindspore/dataset/core/validator_helpers.py:806] 'HWC2CHW' from mindspore.dataset.vision.c_transforms is deprecated from version 1.8 and will be removed in a future version. Use 'HWC2CHW' from mindspore.dataset.vision instead.复制
3 根因分析
其实只是 WARNING
出错的是Mnist的default_transform方法 使用了mindspore.dataset.vision.c_transforms的Resize, Rescale,HWC2CHW
def default_transform(self):
"""Set the default transform for Mnist dataset."""
rescale = 1.0 / 255.0
shift = 0.0
rescale_nml = 1 / 0.3081
shift_nml = -1 * 0.1307 / 0.3081
# define map operations
trans = [
Resize(size=self.resize, interpolation=Inter.LINEAR),
Rescale(rescale, shift),
Rescale(rescale_nml, shift_nml),
HWC2CHW(),
]
return trans
有这个警告是因为这几个方法加了@deprecated_c_vision()这个装饰器.
Resize, Rescale,HWC2CHW 的 __init__方法上都加了类似的装饰器
@deprecated_c_vision()
@check_resize_interpolation
def __init__(self, size, interpolation=Inter.LINEAR):
if isinstance(size, int):
size = (size,)
self.size = size
self.interpolation = interpolation
最新的mindspore已经不使用mindvision, 而是直接使用mindspore.dataset
所以有第二种解法。
4 解决方案
第一种:
修改mnist.py,这个直接修改mindvision的代码。
添加导入
from mindspore.dataset.vision import Resize,Rescale,HWC2CHW
trans = [
Resize(size=self.resize, interpolation=Inter.LINEAR),
Rescale(rescale, shift),
Rescale(rescale_nml, shift_nml),
HWC2CHW(),
]
第二种代码:
import mindspore.dataset as ds
mnist_dataset_dir = "E:\\MNIST_Data"
dataset_train = ds.MnistDataset(dataset_dir=mnist_dataset_dir, usage='train')
dataset_eval = ds.MnistDataset(dataset_dir=mnist_dataset_dir, usage='test')