pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二)

2023-11-15

如果是可以一次性加载进内存的数据,上一篇博客:pytorch 构造读取数据的工具类 Dataset 与 DataLoader (pytorch Data学习一),已经足以应付了,但是很多时候数据集较大,比如6个T…的数据,没办法直接加载,因此这篇博客先学习构建一个可迭代的数据Dataset

MyIterableDataset构造

1. 迭代读取文本文件

要借助pytorch的IterableDataset模块,官方文档是:https://pytorch.org/docs/stable/data.html#torch.utils.data.IterableDataset,官方文档里侧重于对多进程时的描述,按照官网的说法,需要继承这个IterableDataset类,然后覆写__iter__这个方法,返回一个可迭代的对象即可。

因此构造一个基本类

from torch.utils.data import IterableDataset


class MyIterableDataset(IterableDataset):

    def __init__(self, file_path):
        self.file_path = file_path

    def __iter__(self):
        with open(self.file_path, 'r') as file_obj:
            for line in file_obj: # 更多操作在这里完成
                line_data = line.strip('\n').split(',')
                yield line_data

使用的时候直接调用即可:

if __name__ == '__main__':
    dataset = MyIterableDataset('test_csv.csv')
    for data in dataset:
        print(data)

完整代码为:

from torch.utils.data import IterableDataset


class MyIterableDataset(IterableDataset):

    def __init__(self, file_path):
        self.file_path = file_path

    def __iter__(self):
        with open(self.file_path, 'r') as file_obj:
            for line in file_obj:
                line_data = line.strip('\n').split(',')
                yield line_data


if __name__ == '__main__':
    dataset = MyIterableDataset('test_csv.csv')
    for data in dataset:
        print(data)

2.借用pandas迭代读取csv/excel等文件

改写__iter__方法即可:

from torch.utils.data import IterableDataset
import pandas as pd


class PandasIterableDataset(IterableDataset):
    def __init__(self, file_path):
        self.data_iter = pd.read_csv(file_path, iterator=True, header=None, chunksize=1)

    def __iter__(self):
        for data in self.data_iter:
            yield data


if __name__ == '__main__':
    dataset = PandasIterableDataset('test_csv.csv')
    for data in dataset:
        print(data)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二) 的相关文章

随机推荐

  • 安装vuecli3.0.3指定版本_CASTEP 19.1 linux学术版本安装教程

    1 CASTEP学术免费版本申请 CASTEP Cambridge Sequential Total Energy Package 的缩写 是一个基于密度泛函方法的从头算量子力学程序 典型的应用包括表面化学 键结构 态密度和光学性质等研究
  • 新手学Python开发的三大注意事项

    相信有不少刚刚开始学习Python的吧 前期可能繁琐的代码会让你想放弃这门技术 小编在此给大家列一个顺序 希望能够很好的帮助你坚持下去哦 1 学习目标 2 整体认知 3 学习路线 新手学Python开发的三大注意事项 学习要有目标这样在学习
  • 基础算法:整数二分——数的范围

    题目 给定一个按照升序排列的长度为 n 的整数数组 以及 q 个查询 对于每个查询 返回一个元素 k 的起始位置和终止位置 位置从 0 开始计数 如果数组中不存在该元素 则返回 1 1 输入格式 第一行包含整数 n 和 q 表示数组长度和询
  • 2021年Vue最常见的面试题以及答案(面试必过)

    Vue常见面试题 Vue的优点 说说你对SPA单页面的理解 它的优缺点分别是什么 SPA首屏加载速度慢的怎么解决 Vue初始化过程中 new Vue options 都做了什么 对MVVM的理解 Vue数据双向绑定原理 Vue的响应式原理
  • Java网络编程之带文件名的文件传输(服务器+客户端)

    Java网络编程之带文件名的文件传输 文章总览 作者的话 需求分析 客户端代码 服务器端代码 服务器线程定义 结语 文章总览 作者的话 最近做的某个项目涉及到这方面的内容 因有感写下这篇学习记录 希望能给和我一样正在学习java的朋友们起到
  • 网站云服务器资料本地备份,云服务器上备份本地数据

    云服务器上备份本地数据 内容精选 换一换 云服务器备份 CSBS Cloud Server Backup Service 提供对弹性云服务器 Elastic Cloud Server 和裸金属服务器 Bare Metal Server 的备
  • MySQL的主从模式搭建

    一 安装 MySQL 1 在虚拟机中先装两台 centos7 2 然后分别在两台 cnetos7 中安装 mysql 并配置好 mysql 的相关权限等 3 使用MySQL数据库连接工具 SQLyog 或者 Navicat 测试数据库的连接
  • 谷歌浏览器安卓版_安卓android版Chrome浏览器设置教程

    Google Chrome是一款由Google公司开发的网页浏览器 该浏览器基于其他开源软件撰写 包括WebKit 目标是提升稳定性 速度和安全性 并创造出简单且有效率的使用者界面 软件的名称是来自于称作Chrome的网络浏览器GUI 图形
  • Android集成常见问题

    本文介绍了Android SDK集成过程中可能出现的问题和解决方法 调用实人认证SDK 进入认证页面一直显示转圈加载 查看logcat日志 如果出现ErrorCode 202 则说明签名图片文件 yw 1222 0670 jpg 存在问题
  • 2021-02-28

    simulink控制器封装库 控制器封装库 一 封装库的安装和LADRC模块的使用
  • activiti7-2-流程定义、实例、任务查询、任务处理、压缩部署、定义查询、定义删除、定义资源查询、历史信息查询

    我是一个目录 1 流程定义 1 1 绘制流程图 1 2 简单介绍API和原理机制 1 2 1 API 1 2 2 原理机制 1 3 流程定义部署测试类 1 4 分析影响的表 2 流程实例 2 1 启动流程实例 2 2 分析影响的表 3 任务
  • windows 2003 传真服务器高级配置与管理

    这里我和大家一起来了解一下传真服务器的高级配置与管理 在上一博文中我说了 我们要实现电子邮件的通知和传真服务的控制台管理已经日志分析的功能 首先介绍的是windows 2003自带的传真服务器提供了SMTP支持传真到达通知的功能和传真发送成
  • 备战2024秋招面试题-最左匹配原则、索引失效情况、算法(最长回文子串)

    前言 textcolor Green 前言 前言 快秋招了 那么这个专栏就专门来记录一下 同时呢整理一下常见面试题 部分题目来自自己的面试题 部分题目来自网络整理 给我冲 学习目标 面试题 算法题 完成 学习目标 最左匹配原则 索引失效情况
  • 在微信小程序里面使用npm

    在微信小程序里面使用npm 从小程序基础库版本 2 2 1 或以上 及开发者工具 1 02 1808300 或以上开始 小程序支持使用 npm 安装第三方包 为了扩展微信小程序的功能 现在允许微信小程序使用npm 来扩展我们的功能 使用很简
  • 计算机三级网络技术备考复习资料

    以前用到的资料 偶尔翻翻还挺有用 记录之 第一章 计算机基础 分析 考试形式 选择题和填空题 6个的选择题和2个填空题共10分 都是基本概念 1 计算机的四特点 有信息处理的特性 有广泛适应的特性 有灵活选择的特性 有正确应用的特性 此条不
  • vue 测试环境 生产环境 线上环境 环境配置

    var env config dev name dev api url location protocol 10 0 0 230 80 api server url location protocol narcissus ih2ome cn
  • cpp 5.7

    5 7 include
  • 谈谈 Docker Volume 之权限管理(一)

    Volume数据卷是Docker的一个重要概念 数据卷是可供一个或多个容器使用的特殊目录 可以为容器应用存储提供有价值的特性 持久化数据与容器的生命周期解耦 在容器删除之后数据卷中的内容可以保持 Docker 1 9之后引进的named v
  • 1056 Mice and Rice (25 分)

    题目 题解 模拟 看懂题 自己实现就OK了 代码 include
  • pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二)

    如果是可以一次性加载进内存的数据 上一篇博客 pytorch 构造读取数据的工具类 Dataset 与 DataLoader pytorch Data学习一 已经足以应付了 但是很多时候数据集较大 比如6个T 的数据 没办法直接加载 因此这