Dataset、IterableDataset 读取大数据的思路

一、单进程读取数据

Dataset

在数据量很大,无法将全部数据加载到内存的情况下,可以在init中读出表数据行数,在__len__设置为长度返回,在__getitem__中根据idx读表,idx就可以表示读取的表的行数,一般在读表的时候写作 path/table_name?start={}&end={}

import torch
import numpy as np
from torch.utils.data import IterableDataset, Dataset'''
需要先一次性把data都从文件或者表中读出来,知道数据的长度,为了生成index列表,长度为数据的长度
分batch训练的时候,dataloader根据分好的一个batch中的idx来读取这个batch中的数据
'''a = [{'anchor_text': np.array([1, 1, 1]), 'anchor_vis': np.array([1, 1, 1])},{'anchor_text': np.array([2, 2, 1]), 'anchor_vis': np.array([4, 1, 1])},{'anchor_text': np.array([3, 3, 1]), 'anchor_vis': np.array([2, 1, 1])},{'anchor_text': np.array([4, 4, 1]), 'anchor_vis': np.array([3, 1, 1])}]class TableDataset(Dataset):def __init__(self):self.tablepath = ''self.data_length = len(a)def __len__(self):return self.data_lengthdef __getitem__(self, idx):return a[idx]train_dataset = TableDataset()
train_ld = torch.utils.data.DataLoader(train_dataset, batch_size=2, shuffle=False)for idx, batch_data in enumerate(train_ld):print(batch_data)at = batch_data['anchor_text'].to(torch.float32)# print("at--------",at)

IterableDataset

在数据量很大,无法将全部数据加载到内存的情况下,可以在__iter__中一行一行的读表,读一行就立马返回一行。

import torch
import numpy as np
from torch.utils.data import IterableDataset, Dataset
'''
不需要一次性知道数据长度
分batch训练的时候,dataloader根据一个batch的大小bs来执行__iter__函数bs次,得到这个batch的数据
'''a = [{'anchor_text': np.array([1, 1, 1]), 'anchor_vis': np.array([1, 1, 1])},{'anchor_text': np.array([2, 2, 1]), 'anchor_vis': np.array([4, 1, 1])},{'anchor_text': np.array([3, 3, 1]), 'anchor_vis': np.array([2, 1, 1])},{'anchor_text': np.array([4, 4, 1]), 'anchor_vis': np.array([3, 1, 1])}]class TableDataset2(IterableDataset):def __init__(self):self.tablepath = ''def __iter__(self):for line in a:print("line:",line)yield linetrain_dataset = TableDataset2()
train_ld = torch.utils.data.DataLoader(train_dataset, batch_size=2, shuffle=False)for idx, batch_data in enumerate(train_ld):print(batch_data)at = batch_data['anchor_text'].to(torch.float32)# print("at--------",at)

上述提到的处理数据量大的方法,都需要提前将数据处理好存入表中,程序读取数据就可以直接跑模型了。

二、多进程读取数据

后续有时间再补上

IterableDataset

当DataLoader设置为多进程时,每个进程都会拥有一个IterableDataset的生成器函数__iter__,每当这个进程收集到的数据达到batch size的时候,就把这批收集到的数据给loader,也就在for batch_data in train_loader: 的时候就能得到这批数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机基础晦涩难懂?那你是没看他的图解文章!

这年头,写计算机基础的人好之又少,能把枯燥无味的计算机基础写的通俗易懂的人更是少,而就有一位叫「小林coding」的公众号横空出世,真的是一股清流,他酷爱「图解」计算机基础文章,真正做到了图解&#xff0…

Litho在美团动态化方案MTFlexbox中的实践

1. MTFlexbox MTFlexbox是美团内部应用的非常成熟的一种跨平台动态化解决方案,它遵循了CSS3中提出的Flexbox规范来抹平多平台的差异。MTFlexbox适用于重展示、轻交互的业务场景,与现有HTML、React Native、Weex等跨平台方案相比,MTFlexbox具备…

服务器部署docker

服务器部署docker docker简介## 可以把docker是一个容器,可以让开发者将自己的项目部署到这个容器中,最常用的场景是将自己的后端项目部署到服务器的时候会将其打入docker镜像中,可以理解为一个开销更小的虚拟机。 docker好处## 可以轻易地让…

LeetCode 461. 汉明距离(异或^ 与)

文章目录1. 题目2. 解题1. 题目 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y&#xff0c;计算它们之间的汉明距离。 注意&#xff1a; 0 ≤ x, y < 2^31.示例:输入: x 1, y 4输出: 2解释: 1 (0 0 0 1) 4 (0 1 0 0)…

论文浅尝 | NumNet: 一种带有数学推理的机器阅读理解模型

论文笔记整理&#xff1a;吴林娟。来源&#xff1a;EMNLP2019论文链接&#xff1a;https://arxiv.org/pdf/1910.06701.pdf开放源码&#xff1a;https://github.com/ranqiu92/NumNet概述本文提出了一个将数学推理融入机器阅读理解的模型——NumNet&#xff0c;其中利用数字感知的…

Android官方开发文档Training系列课程中文版:构建第一款安卓应用之入门指南

入门指南 欢迎来到安卓开发训练课&#xff0c;在这里你可以找到一系列课程来描述如何使用现有的代码示例来重新适用到你的APP上&#xff0c;你可以在左侧的导航栏顶部看到在若干个大项里有若干个有组织的子项课程。(导航栏请参见官方文档的导航栏) 在第一个大项里&#xff0c…

2021,你好哇!发个小红包可好~

小伙伴们&#xff0c;大家新年快乐哇&#xff5e;凡是过往皆序章&#xff0c;所有将来皆可盼。2020磨难太多&#xff0c;就祝大家2021多吃不胖叭&#xff01;原创即正义&#xff01;2020年对卖萌屋来说是非常不平凡的一年。这一年的时间里&#xff0c;卖萌屋坚守内容创作的初心…

降低软件复杂性一般原则和方法

一、前言 斯坦福教授、Tcl语言发明者John Ousterhout 的著作《A Philosophy of Software Design》[1]&#xff0c;自出版以来&#xff0c;好评如潮。按照IT图书出版的惯例&#xff0c;如果冠名为“实践”&#xff0c;书中内容关注的是某项技术的细节和技巧&#xff1b;冠名为“…

Android官方开发文档Training系列课程中文版:构建第一款安卓应用之环境配置

欢迎来到Android开发大家庭。 这一课将会教授你如何构建你的第一款安卓应用。你将会学习到如何创建一个安卓工程&#xff0c;并运行一个可调试的应用版本。你也将会学习一个基本的安卓应用设计&#xff0c;包括如何构建一个简单的用户界面以及如何处理用户输入。 配置环境变量…

LeetCode 657. 机器人能否返回原点

文章目录1. 题目2. 解题1. 题目 在二维平面上&#xff0c;有一个机器人从原点 (0, 0) 开始。给出它的移动顺序&#xff0c;判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R&#xff08;右&am…

论文浅尝 | 基于图匹配神经网络的跨语言知识图对齐 (ACL 2019)

本文转载自公众号&#xff1a;PaperWeekly。作者&#xff1a;王文博&#xff0c;哈尔滨工程大学硕士生&#xff0c;研究方向为知识图谱、表示学习。动机在本篇文章之前&#xff0c;跨语言知识图谱对齐研究仅依赖于从单语知识图谱结构信息中获得的实体嵌入向量。并且大多数研究将…

谷歌大改Transformer注意力,速度、内存利用率都提上去了-新的 Transformer 架构——Performer

原文地址&#xff1a;https://www.jiqizhixin.com/articles/2020-10-28-10 Transformer 有着巨大的内存和算力需求&#xff0c;因为它构造了一个注意力矩阵&#xff0c;需求与输入呈平方关系。谷歌大脑 Krzysztof Choromanski 等人最近提出的 Performer 模型因为随机正正交特性…

一文搞懂 PyTorch 内部机制

文 | ArchWalker译者序&#xff1a;这篇博文是一篇非常新的介绍PyTorch内部机制的文章&#xff0c;作者Edward Z Yang来自于Stanford大学&#xff0c;是PyTorch的核心开发者之一。文章中介绍了如何阅读PyTorch源码和扩展PyTorch的技巧。目前讲PyTorch底层的文章不多&#xff0c…

美团外卖商家端视频探索之旅

背景 美团外卖至今已迅猛发展了六年&#xff0c;随着外卖业务量级与日俱增&#xff0c;单一的文字和图片已无法满足商家的需求&#xff0c;商家迫切需要更丰富的商品描述手段吸引用户&#xff0c;增加流量&#xff0c;进而提高下单转化率和下单量。商品视频的引入&#xff0c;在…

Android官方开发文档Training系列课程中文版:构建第一款安卓应用之工程创建

这节课你将会学到&#xff1a; - 使用Android Studio创建一个工程。 - 使用命令行工具创建一个工程。 你也应该阅读&#xff1a; - 安装SDK - 管理工程 安卓项目包含了包括源代码在内的所有文件。Android SDK工具使我们很轻松的创建一个包含一系列默认目录和文件的的安卓工…

LeetCode 1051. 高度检查器

文章目录1. 题目2. 解题1. 题目 学校在拍年度纪念照时&#xff0c;一般要求学生按照 非递减 的高度顺序排列。 请你返回至少有多少个学生没有站在正确位置数量。该人数指的是&#xff1a;能让所有学生以 非递减 高度排列的必要移动人数。 示例&#xff1a;输入&#xff1a;[…

论文浅尝 | 基于动态记忆的原型网络进行元学习以实现少样本事件探测

本文转载自公众号&#xff1a;浙大KG。 论文题目&#xff1a;Meta-Learning with Dynamic-Memory-Based Prototypical Network for Few-Shot Event Detection本文作者&#xff1a;邓淑敏&#xff0c;浙江大学在读博士&#xff0c;研究方向为低资源条件下知识图谱自动化构建关键…

字节跳动破局联邦学习:开源Fedlearner框架,广告投放增效209%

本文介绍了字节跳动联邦学习技术团队自研的联邦学习平台 Fedlearner &#xff0c;分享了该平台的技术实现与落地应用体验&#xff0c;向读者展示了字节跳动如何联邦学习落地难题的突破点。作为分布式的机器学习范式&#xff0c;联邦学习能够有效解决数据孤岛问题&#xff0c;让…

软硬兼施极限轻量BERT!能比ALBERT再轻13倍?!

文 | Sheryc_王苏这个世界上有两种极具难度的工程&#xff1a;第一种是把很平常的东西做到最大&#xff0c;例如把语言模型扩大成能够写诗写文写代码的GPT-3&#xff1b;而另一种恰恰相反&#xff0c;是把很平常的东西做到最小。对于NLPer来说&#xff0c;这种“小工程”最迫在…

Android官方开发文档Training系列课程中文版:构建第一款安卓应用之程序运行

如果你在上一节创建了一个”Hello World”的工程&#xff0c;那么它可以让你立即运行APP。 如何运行应用依靠两样事情&#xff1a;一台运行安卓系统的设备&#xff0c;AS。这节课将展示如何安装并运行应用到真实的设备上和安卓模拟器上&#xff0c;这两种情况都适用于AS和命令…