首页 > 其他分享 >MegEngine 使用小技巧:借助 DataLoader 获取分批数据

MegEngine 使用小技巧:借助 DataLoader 获取分批数据

时间:2023-03-09 10:47:05浏览次数:47  
标签:分批 DataLoader batch dataset MegEngine data size

在使用 MegEngine 进行模型训练时,首先要进行的是数据加载和预处理。在此过程中,MegEngine 中的megengine.data模块,提供了数据分批功能,其内部实现流程如下图:

通过使用 Dataloader,我们可以方便地对数据进行相关操作,比如设置 batch_size 以及自定义数据预处理的过程。示例代码如下:

from megengine.data import DataLoader
from megengine.data.dataset import ArrayDataset
from megengine.data.sampler import SequentialSampler
 
def init_dataset():
    rand_data = np.random.randint(0, 255, size=(100, 1, 32, 32), dtype=np.uint8)
    label = np.random.randint(0, 10, size=(100,), dtype=int)
    dataset = ArrayDataset(rand_data, label)
    return dataset
 
dataset = init_dataset()
dataloader = DataLoader(
    dataset, sampler=SequentialSampler(dataset, batch_size=5)
)
 
for batch_data, batch_label in dataloader:
    print(batch_data.shape)
    break

在上面的代码中,我们用 ArrayDataset 对 NumPy ndarray 格式的数据集进行了快速封装, 接着使用顺序采样器 SequentialSampler 对 house_dataset 进行了采样, 二者用来作为参数初始化 DataLoader, 最终获取到了一个可迭代的对象,每次提供 batch_size 大小的数据和标记。

len(dataloader)    # 20
batch_data.shape   # (5, 1, 32, 32)
batch_label.shape  # (5,)

我们在上面选定的 batch_size 为 5,样本容量为 100, 因此可以划分成 20 批数据。

Dataloader 也支持用户自定义对数据做预处理操作,而在 MegEngine 中也定义很多图像处理领域的预处理方式,如图像裁剪、翻转等。 更多 DataLoader 功能介绍,见文档:https://www.megengine.org.cn/doc/stable/zh/user-guide/model-development/data/index.html

「MegEngine 使用小技巧」系列文章,重点输出 MegEngine 及周边工具的使用技巧,如有催更或投稿,欢迎联系我们哦~

更多 MegEngine 信息获取,您可以:查看文档GitHub 项目,欢迎参与 MegEngine 社区贡献,成为 Awesome MegEngineer,荣誉证书、定制礼品享不停。

标签:分批,DataLoader,batch,dataset,MegEngine,data,size
From: https://www.cnblogs.com/megengine/p/17197460.html

相关文章

  • 让PPT中表格内容分批出现
    继上一篇文章对PPT的吐槽之后,又发明了一套方法用于分批展示PPT中表格内容. 首先,展示原始表格. 复制表格,然后右上角选择性粘贴,复制为增强型图元.   ......
  • TensorDataset和DataLoader
    一、TensorDataset语法:classtorch.utils.data.TensorDataset(data_tensor, target_tensor)作用:包装数据和目标张量(类似Python中的zip()函数),可通过第一维度索引两个张量恢......
  • pytorch不定长数据的dataloader读取
    参考资料:https://pytorch.org/docs/stable/data.html#dataloader-collate-fnhttps://blog.csdn.net/anshiquanshu/article/details/112868740在使用Pyt......
  • 用dask并行把大量文本数据读入numpy并分批保存
    导入包importnumpyasnpimportosimportdask看看文件格式和file_list=os.listdir('train_data')print(len(file_list))print(file_list[:100])delayed读......
  • MegEngine 使用小技巧:使用 Netron 实现模型可视化
    近期社区有多个同学问,如何查看MegEngine训练出的模型网络结构。其实在去年8月,MegEngine就已经集成到了Netron平台上。目前Netron已支持MegEngine模型:TracedMod......
  • MegEngine 使用小技巧:使用 Netron 实现模型可视化
    近期社区有多个同学问,如何查看MegEngine训练出的模型网络结构。其实在去年8月,MegEngine就已经集成到了Netron平台上。目前Netron已支持MegEngine模型:TracedModu......
  • 12、dataloader的使用
    dataloader数据加载器:将数据加载到神经网络中。定义每次取多少数据,怎么取1、打开pytorch官网----Doc中找pytorch官方文档----搜索dataloader出现在torch.utils,.data.Dat......
  • oracle批量更新之使用游标进行分批次更新的5种方式及速度比对
     1.情景展示一共有22w条数据, 需要将A表的主键更新至B表的指定字段,如何快速完成更新?2.解决方案声明:解决方案不只一种,该文章只介绍快速游标法及代码实现;两张表......
  • 提速还能不掉点!深度解析 MegEngine 4 bits 量化开源实现
    随着深度学习的发展,其应用场景也越发的广泛与多样。这些多样化的场景往往会对实际的部署提出更加“定制化”的限制。例如,自动驾驶汽车对人体识别的精度要求肯定比图像识别动......
  • Dataset和Dataloader的使用
    在深度学习中训练模型都是小批量小批量地优化训练的,即每次都会从原数据集中取出一小批量进行训练,完成一次权重更新后,再从原数据集中取下一个小批量数据,然后再训练再更新。......