• 【MindSpore】【自定义数据集】GeneratorDataset 可迭代,但是model.train跑不动


    问题描述:

    自己写了一个GeneratorDataset,用于迭代数据,使用create_dict_iterator(),可以迭代。但是放入model来train的时候model进程就卡住了。之前我有mindrecord dataset,是完全可以运行的。

    生成dataset的代码,一部分是mindrecord。另一部分是generatordataset
    def load_adEAST_dataset(mindrecord_file, batch_size=64, device_num=8, rank_id=0,
                                  is_training=True, num_parallel_workers=8):
        '''                  
        ds = de.GeneratorDataset(gen, column_names=['images', 'label'], num_parallel_workers=num_parallel_workers, shuffle=is_training)
       # hwc_to_chw = vision.HWC2CHW()
    
        #ds = ds.map(operations=[hwc_to_chw], input_columns=["images"], num_parallel_workers=num_parallel_workers)
        #ds = ds.batch(batch_size, drop_remainder=True)
        with open(os.path.join(cfg.data_dir, cfg.train_fname), 'r') as f_train:
            f_list = f_train.readlines()
            batch_num = len(f_list) // cfg.batch_size
        #ds = ds.shuffle(batch_num)
        return ds, batch_num
    
        '''
        ds = de.MindDataset(mindrecord_file, columns_list=["image", "label"], num_shards=device_num, shard_id=rank_id, num_parallel_workers=8, shuffle=is_training)
        hwc_to_chw = vision.HWC2CHW()
    
        ds = ds.map(operations=[hwc_to_chw], input_columns=["image"], num_parallel_workers=num_parallel_workers)
    
        ds = ds.batch(batch_size, drop_remainder=True)
        batch_num = ds.get_dataset_size()
        ds = ds.shuffle(batch_num)
        return ds, batch_num

    解决方案:

    1. 的model.train卡住是一直吗?经过一段时间打不打印报错信息?如果有报错信息,也麻烦发一下。

    2. 建议在 GeneratorDataset/MindDataset这个接口里面shuffle=True是比较高效的,那么ds.shuffle这个操作就没有必要了。

      你可以把ds.shuffle操作中的参数调小一点/去掉这行代码,我看现在是把整个数据集大小填在里面了,这会导致整个数据集都缓存在shuflle这个算子里,一是占太多内存,二是shuffle效率不高。

  • 相关阅读:
    Python编程之文件操作
    37-5 基于时间的盲注 SQL 注入 PoC 的 Python 编写
    zookeeper+kafka
    MSYS2 使用
    学习自媒体运营方法,这些你需要了解,带你快速实现变现
    无敌!我用【C语言】手搓出了一个体系完整的【员工管理系统】还能玩游戏听音乐?(超详细,附完整源码)
    Python爬虫
    Linux命令(79)之tr
    算法学习 | 回溯算法之深度优先搜索常见题型练习
    求二叉树的高度(可运行)
  • 原文地址:https://blog.csdn.net/weixin_45666880/article/details/126021963