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

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

这是 mindspore 数据类中缺少 “get_next”,这个方法,但是在 Fashion-MNIST图像识别 的官方代码中却使用的这个方法,大概率是 mindspore 在版本更替时修改了,官方的解决方法是这样的:

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 为什么 官方要把这个变成私密方法。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
错误信息"AttributeError: 'dict' object has no attribute 'get_batch'"表示在一个字典对象上调用了一个名为"get_batch"的方法,但该方法在该字典对象上不存在。 根据提供的引用内容,可以看出错误信息中的字典对象是缺少"get_batch"方法的。因此,要解决这个问题,你需要确认你正在使用的字典对象是否应该具有"get_batch"方法。如果是,则可能是由于代码逻辑错误或数据结构错误导致字典对象没有正确地初始化或赋值。 如果你确定字典对象不应该具有"get_batch"方法,那么你可能需要检查代码中是否有错误的调用或错误的数据类型转换,以确保你正在操作正确的对象类型。 另外,请注意错误信息中的"AttributeError"表示在调用属性或方法时发生了错误,常见的原因可能包括拼写错误、大小写错误、属性或方法名称不存在等。因此,你需要仔细检查代码中涉及到的属性和方法的名称是否正确拼写和大小写。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [PyTorch的lr_scheduler:AttributeError: ‘ReduceLROnPlateau‘ object has no attribute ‘get_last_lr](https://blog.csdn.net/ayiya_Oese/article/details/120760147)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [mindspore 报错 AttributeError: ‘DictIteratorobject has no attribute ‘get_next](https://blog.csdn.net/weixin_44354483/article/details/121022041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值