• 【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效率不高。

  • 相关阅读:
    TCP Illinois 与 TCP Highspeed
    类和对象(1)
    前端编程应该了解的数据结构——链表
    要我说,还是会写总结的项目经理才吃香
    计算机网络和因特网
    【牛客刷题】带你在牛客刷题第一弹(C/C++语言基础题)
    分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
    甘特图组件DHTMLX Gantt示例 - 如何有效管理团队工作时间?(二)
    图像边缘检测--(Sobel、Laplacian、Canny)
    【JavaEE】Spring AOP (面向切面)详解
  • 原文地址:https://blog.csdn.net/weixin_45666880/article/details/126021963