MindSpore报错"TypeError: parse() missing 1 required positional."
2022/7/16 23:48:57
本文主要是介绍MindSpore报错"TypeError: parse() missing 1 required positional.",对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 报错描述
1.1 系统环境
ardware Environment(Ascend/GPU/CPU): CPU
Software Environment:
– MindSpore version (source or binary): 1.6.0
– Python version (e.g., Python 3.7.5): 3.7.6
– OS platform and distribution (e.g., Linux Ubuntu 16.04): Ubuntu 4.15.0-74-generic
– GCC/Compiler version (if compiled from source):
1.2 基本信息
1.2.1脚本
此案例使用mindspore.dataset自定义数据集:
import os import numpy as np from PIL import Image import mindspore.common.dtype as mstype import mindspore.dataset as ds import mindspore.dataset.transforms.c_transforms as C import mindspore.dataset.vision.c_transforms as vc class _dcp_Dataset: def __init__(self,img_root_dir,device_target="CPU"): if not os.path.exists(img_root_dir): raise RuntimeError(f"the input image dir {img_root_dir} is invalid") self.img_root_dir=img_root_dir self.img_names=[i for i in os.listdir(img_root_dir) if i.endswith(".jpg")] self.target=device_target def __len__(self): return len(self.img_names) def __getitem__(self, index): img_name=self.img_names[index] im=Image.open(os.path.join(self.img_root_dir,img_name)) image=np.array(im) label_str=img_name.split("_")[-1] label_str=label_str.split(".")[0] label=np.array(label_str) return image,label def creat_dataset(dataset_path,batch_size=2,num_shards=1,shard_id=0,device_target="CPU"): dataset=_dcp_Dataset(dataset_path,device_target) data_set=ds.GeneratorDataset(dataset,["image","label"],shuffle=True,num_shards=1,shard_id=0) image_trans=[ vc.Resize((224,224)), vc.RandomHorizontalFlip(), vc.Rescale(1/255,shift=0), vc.Normalize((0.4465, 0.4822, 0.4914), (0.2010, 0.1994, 0.2023)), vc.HWC2CHW ] label_trans=[C.TypeCast(mstype.int32)] data_set=data_set.map(operations=image_trans,input_columns=["image"]) data_set=data_set.map(operations=label_trans,input_columns=["label"]) # data_set=data_set.shuffle(buffer_size=batch_size) data_set=data_set.batch(batch_size=batch_size,drop_remainder=True) # data_set=data_set.repeat(1) return data_set if __name__ == '__main__': data=creat_dataset("./image_DCP") print(data) data_loader = data.create_dict_iterator() for i, data in enumerate(data_loader): print(i) print(data)
1.2.2报错
报错信息:
2 原因分析以及解决办法
此处缺少(),将此处代码改为 vc.HWC2CHW() 可正常执行。
3 总结
定位问题的步骤
例如:有 xxDataset -> map -> map -> batch 这样的数据处理流程。
可以按如下方式调试脚本:
- 只保留 xxDataset,然后运行下脚本,查看是否报错;
- 保留 xxDataset -> map,然后运行下脚本,查看是否报错;
- 保留 xxDataset -> map -> map,然后运行下脚本,查看是否报错;
- 保留 xxDataset -> map -> map -> batch,然后运行下脚本,查看是否报错;
按照上述的方法,可定位到是哪个map/batch出错了。
这篇关于MindSpore报错"TypeError: parse() missing 1 required positional."的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?
- 2024-12-23汽车4S店运营效率提升的核心工具