mindspore 报错 AttributeError: ‘DictIterator‘ object has no attribute ‘get_next‘

这里写自定义目录标题

      • 报错 AttributeError: 'DictIterator' object has no attribute 'get_next'

报错 AttributeError: ‘DictIterator’ object has no attribute ‘get_next’

这是 mindspore 数据类中缺少 “get_next”,这个方法,但是在 Fashion-MNIST图像识别 的官方代码中却使用的这个方法,大概率是 mindspore 在版本更替时修改了,官方的解决方法是这样的:
mindspore 报错 AttributeError: ‘DictIterator‘ object has no attribute ‘get_next‘_第1张图片

ds_test.create_dict_iterator()
create_dict_iterator()返回的是一个mindspore.dataset.engine.iterators.DictIterator的对像

这个对像是没有get_next()方法的。


如果想迭代数据集,可以直接用create_dict_iterator()


如下例子仅供参考:

import erhsh.ms as ems
import numpy as np

ds = ems.DatasetMocker().set_features({
    "data": lambda: np.random.rand(1, 32, 32).astype(np.float32),
    "label": lambda: np.random.randint(10, size=()).astype(np.int32)
}).set_data_len(1 * 32).set_batch_size(32).mock()


for x in ds.create_dict_iterator():
    keys = x.keys()
    for k in keys:
        v = x.get(k)
        print("{} {} -> {} {}".format("Item:", k, v.shape, v.dtype), flush=True)
    break

我表示不能理解,我便进入 DictIterator 类的源码查看,发现其实有这个方法但是已经变成的私密方法:
mindspore 报错 AttributeError: ‘DictIterator‘ object has no attribute ‘get_next‘_第2张图片

当我把下划线删除后,问题和设想差不多,解决了,完美运行。但我不理解 mindspore 为什么 官方要把这个变成私密方法。

你可能感兴趣的:(python,深度学习)