一、单进程读取数据

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: 的时候就能得到这批数据。

Dataset、IterableDataset 读取大数据的思路相关推荐

  1. PyTorch 读取大数据

    PyTorch 读取大数据 数据量太大,必须分批从磁盘加载,下面是单机单卡的思路: from torch.utils.data import Dataset, DataLoader import to ...

  2. 一本真正讲“大数据”处理思路的书

    这是我读到的第一本真正讲"大数据"处理思路的书,我想分享一下我读了这本书的感悟. 一般情况下,在面对海量数据的时候,我们的软件架构也会跟着发生变化.当你的数据量在内存里放不下的时候 ...

  3. SAP ABAP 探索 CL_FDT_XL_SPREADSHEET 读取大数据量 Excel 的可能性

    SAP ABAP 探索 CL_FDT_XL_SPREADSHEET 读取大数据量 Excel 的可能性 引言: 今时不同往日了,特别是在电商和零售行业中,动不动一个导入的 Excel 就有几十万行几十 ...

  4. python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案...

    1.OpenXmlSDK是个很好的类库,可惜只能通过C#调用,C#的童鞋又福气了. 2.服务端程序由于没法安装office,所以这个对asp.net网站来说是最理想的库了.需要.net 4.0版本以上 ...

  5. python读取大数据量xml_多快好省地使用pandas分析大型数据集

    1 简介 pandas虽然是个非常流行的数据分析利器,但很多朋友在使用pandas处理较大规模的数据集的时候经常会反映pandas运算"慢",且内存开销"大". ...

  6. Poi读取大数据量Excel文件

    前言 最近生产环境有个老项目一直内存报警,不时的还出现内存泄漏,导致需要重启服务器,已经严重影响正常服务了. 分析 1.dump内存文件 liunx使用如下命令: ? 1 ./jmap -dump:f ...

  7. python大数据读取分析_python如何读取大数据

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. 构建煤矿物联网大数据平台思路(2)-实时数据库与时序数据库

    传统工业实时历史数据库与时序数据库的区别? 本文介绍了实时数据库和时序数据库,并就其特点.应用场景.相关厂商.联系与区别做介绍. 实时历史数据库 ![实时历史数据库架构.png](https://im ...

  9. 【第01篇】利用POI框架的SAX方式之读取大数据2007版Excel(xlsx)【第1版】

    1.开发环境:jdk7,poi3.13 如图: 红色标注的jar包需要自己去下,这个是利用SAX机理处理xml的接口,而POI实现了它(我记得是这样,仅供参考) 2. 背景需求: 前台上传一个xlsx ...

最新文章

  1. 关于服务器启动慢的问题
  2. Anaconda入门使用指南(二)
  3. 宽度定死、按照行间距、字体算出label高度
  4. 浅析网站优化知识自学从哪些方面开始起步
  5. 【每周CV论文推荐】 初学活体检测与伪造人脸检测必读的文章
  6. (转)AS3 Socket
  7. 东北师范大学计算机学院的导师,东北师范大学计算机科学与信息技术学院研究生导师简介-王佳男...
  8. 移动应用开发——作业3
  9. 线段覆盖(洛谷P1803题题解,C++语言描述)
  10. python对seo有什么用_现在做seo会运用到python吗
  11. nginx防火墙在哪设置_Nginx 基本使用介绍
  12. RecyclerView混合布局
  13. MACD神器 通达信指标公式 副图 源码 无加密 无未来
  14. 读书笔记|《金字塔原理》第二章
  15. Linux安装maven(超详细教程)
  16. 右浮动的顺序是反过来的,html中第一个是最后显示,而最后一个会在第一个显示。
  17. PowerDesigner关联表结构表示一对一或一对多
  18. 教你使用Python实现新个税计算器!
  19. Bzoj 2563: 阿狸和桃子的游戏 题解
  20. 随机密码生成(Python编程)

热门文章

  1. UDT源码剖析(三):UDT::startup()过程代码注释
  2. 毕业2年,我的工作小结
  3. 一直想说的,技术职业化
  4. 中缀表达式转换为前缀及后缀表达式并求值【摘】
  5. 包与模块管理及面向对象初步
  6. Linux_ACL_su
  7. Web框架——Flask系列之蓝图Blueprint(二十一)
  8. LeetCode 1818. 绝对差值和(二分查找)
  9. 牛客 XOR和(找规律)
  10. LeetCode 480. 滑动窗口中位数(大小堆升级版+set实现)