Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从一个从时代到时代的高IO数据集中读取

如何从一个从时代到时代的高IO数据集中读取
EN

Stack Overflow用户
提问于 2020-02-07 11:31:54
回答 1查看 1.9K关注 0票数 9

我使用Tensorflow,但我为用户编写文档,这些文档通常会随着深度学习框架的不同而有所不同。

当使用不适合本地文件系统(TB+)的数据集时,我从远程数据存储中采样数据,并在本地将样本写入Tensorflow标准tfrecords格式。

在训练的第一个阶段,我只采样了几个值,因此局部数据的时代很小,我对它进行了训练。在第二阶段,我重新检查由我的采样子进程(现在更多)生成的数据文件,并为下一个时代对扩展的本地数据文件集进行培训。重复每一个时代的过程。通过这种方式,我建立了一个本地的样本缓存,并可以在填充本地存储空间时驱逐旧的样本。本地样本缓存在模型需要最大方差时(面向训练的后半部分)增长。

在Python/Tensorflow中,我不对Python训练循环过程中的数据进行反序列化至关重要,因为Python不能支持数据传输速率(300-600 MB/秒,数据是原始的、科学的、不可压缩的),因此,当Python不能快速服务培训循环时,GPU的性能就会受到影响。

从子进程()将示例写入tfrecords文件允许tensorflow的本机TFRecordsDataset在Python之外进行反序列化,因此我们避免了Python问题,我可以使用高IO数据速率填充GPU。

我想知道我将如何处理这个问题在毕道尔。我正在撰写关于正在使用的抽样策略的文章,并希望向Tensorflow和PyTorch的用户提供具体的建议,但我对PyTorch预处理生态系统的了解还不够深入。

附带注意:唯一支持这些数据传输速率的纯Python解决方案可能是Python3.8中的系统V共享内存和多处理,但我还没有尝试过,因为对它的支持还不够(很快就会)。现有的多处理解决方案是不够的,因为它们需要在训练循环过程中反序列化,从而在反序列化期间以高IO速率锁定GIL。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-17 07:38:24

实际上,您可以使用torch.utils.data.DataLoader轻松地反序列化子进程中的数据。通过将num_workers参数设置为1或更大的值,您可以使用自己的python解释器和GILs生成子进程。

代码语言:javascript
运行
AI代码解释
复制
loader = torch.utils.data.DataLoader(your_dataset, num_workers=n, **kwargs)
for epoch in range(epochs):
    for batch_idx, data in enumerate(loader):
         # loader in the main process does not claim GIL at this point

Dataloader需要一个torch.utils.data.Dataset来获取数据。在您的情况下,实现一个适当的子类可能不是一项简单的工作。如果您需要为每个时代重新创建一个Dataset实例,您可以这样做。

代码语言:javascript
运行
AI代码解释
复制
for epcoh in range(epochs):
    dset = get_new_dataset()
    loader = torch.utils.data.DataLoader(dset, num_workers=n, **kwargs)
    for batch_idx, data in enumerate(loader):
        # Do training

甚至更好

代码语言:javascript
运行
AI代码解释
复制
dset = get_new_dataset()
loader = torch.utils.data.DataLoader(dset, num_workers=n, **kwargs)

for epcoh in range(epochs):
    last_batch_idx =  (len(dset)-1) // loader.batch_size
    for batch_idx, data in enumerate(loader):
        # Prepare next loader in advance to avoid blocking
        if batch_idx == last_batch_idx:
            dset = get_new_dataset()
            loader = torch.utils.data.DataLoader(dset, num_workers=n, **kwargs)
        # Do training

另外,请注意,在大多数情况下,受GIL影响的是CPU绑定操作,而不是I/O绑定操作,也就是说,threading将用于任何纯I/O操作,甚至不需要subprocess。有关更多信息,请参阅本问题和维基百科文章

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60119934

复制
相关文章
Android webkit keyevent 事件传递过程
前言:基于android webview 上定制自己使用的可移植浏览器apk,遇到好多按键处理的问题。所以索性研究了一下keyevent 事件的传递流程。 frameworks 层 keyevent 事件开始是从/frameworks/base/core/java/android/webkit 目录下WebViewClassic.java 中onKeyDown() 函数开始的 // Bubble up the key event if // 1. it is a system key; or
程序员互动联盟
2018/03/12
1.4K0
WPF Window 窗口获得焦点和失去焦点事件
Window 窗口获得焦点和失去焦点事件(窗口变为背景窗口、窗口切换等都引起窗口焦点失去) Activated获得焦点事件 和 Deactivated失去焦点的事件: Activated: 获得焦点 (首次打开软件时;由别的软件切换回当前软件时;点击当前软件在任务栏的按钮时) Deactivated:失去焦点,与Activated正好相反,(Deactivated = de + activated) 使用方法有两种: 第一种是在XAML中声明,然后在后台书写执行代码:
全栈程序员站长
2022/09/12
4.8K0
Android KeyEvent 点击事件分发处理流程(一)
这次打算来梳理一下 Android Tv 中的按键点击事件 KeyEvent 的分发处理流程。一谈到点击事件机制,网上资料已经非常齐全了,像什么分发、拦截、处理三大流程啊;或者 dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent 啊;再或者返回 true 表示消费,返回 false 不处理啊;还有说整个流程是个 U 型分发处理,什么总经理发布任务到员工处理反馈啊之类的。前辈们早已为我们梳理了一篇篇干货,也在尽可能的写得通俗、易懂。
请叫我大苏
2018/05/17
4.1K0
Android中窗口Input事件接收
至此 , 在InputMangerService与应用窗口间就建立了Socket连接.
None_Ling
2020/09/28
4K0
jquery中失去焦点事件_easyui失去焦点事件没触发
事件会在获得焦点的时候触发,既可以是鼠标行为,也可以是按tab键导航触发的行为,并且绑定一个处理方法。
全栈程序员站长
2022/09/20
4.9K0
焦点事件
焦点详解:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候就可以接收用户的输入 1.点击 2.tab 3.js
河湾欢儿
2018/09/06
3.2K0
获得焦点与失去焦点事件
获得焦点事件(onfocus)是当某个元素获得焦点时触发事件处理程序。
全栈程序员站长
2022/09/07
6K0
Android getevent,sendevent,input keyevent
getevent和sendevent是Android系统自带的获取设备的收发事件和模拟设备事件进行自动话测试。而input keyevent也在自动话测试中有很大的作用,用于模拟常用按键等。接下来就一一是实践角度分析此三个工具的使用方法。
DragonKingZhu
2020/03/24
2.1K0
Android  getevent,sendevent,input keyevent
焦点事件中的Validating处理方法
本文转载:http://tech.it168.com/oldarticle/2006-04-03/200604031055437.shtml
跟着阿笨一起玩NET
2018/09/18
2.1K0
[javascript] vue中elementui 回车事件、获取焦点、按键等事件
当想要在一个输入框上实现回车就发送的功能的时候 , 需要给输入框增加回车事件 当想要在输入框实现点击或者当前焦点,失去焦点,调用某些函数,实现某些功能时 可以按这样 <el-input @focus="textareaFocus" @blur="textareaBlur" v-model="messageContent" @keyup.native="inputNextText" v-on:keyup.enter.native="chatToUser" :placeholder=
唯一Chat
2021/05/17
4.3K0
[Android][Framework] AndroidTV小窥及keyEvent事件传递流程
首先我不做AndroidTV,只是因为一些汽车的屏幕无法触摸,所以无法获得Touch事件,但是车机上有一些旋钮,可以拿到一些键盘事件,因此需要用这些键盘事件对系统(不是应用)进行交互。所以,为了解决这个问题,就需要先了解一下Android TV应用的原理,以及键盘事件是如何传递的。
wOw
2020/01/20
1.5K0
[Android][Framework] AndroidTV小窥及keyEvent事件传递流程
史上最全webview详解
WebView在现在的项目中使用的频率应该还是非常高的。 我个人总觉得HTML5是一种趋势。找了一些东西,在此总结。 本篇最后有一个非常不错 的 Html5Activity 加载类,不想看的可以直接跳下载。 WebSettings WebSettings webSettings = mWebView .getSettings(); //支持获取手势焦点,输入用户名、密码或其他 webview.requestFocusFromTouch(); setJavaScriptEnabled(true);
xiangzhihong
2018/02/01
6.7K0
从源码出发浅析 Android TV 的焦点移动原理 (上篇)
QQ音乐技术团队
2017/11/03
7.9K1
从源码出发浅析 Android TV 的焦点移动原理 (上篇)
我的2017年总结笔记整理
2017就这么的过了,最近几天朋友圈里一直在晒18岁的梗,90后彻底退出青少年时代了,不服老不行啊,今天是17年最后一天,大家都去看晚会了,空巢老人还是写篇总结来记录下自己的2017吧。 先回顾一下17年: 3月4月偷偷离校满怀憧憬的跑去公司实习; 5月6月回校做毕设、写论文,享受最后的校园时光,同时喜欢上了每天跑3公里,因为有着一个腹肌梦; 6月底找了个基友,啥准备也没有就来了趟毕业旅行,跑到了人生中离开家最远的一次,爬了山,看了水,满足; 7月作为职场小菜鸟步入公司,开始打怪升级,同时找了几个同
请叫我大苏
2018/05/17
7610
【Android 应用开发】自定义View 和 ViewGroup
回调方法, 从XML布局中加载该重写的View组件的时候, 就会回调这个方法;
韩曙亮
2023/03/27
5540
【Android 应用开发】自定义View 和 ViewGroup
dom啦17 焦点事件
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <input type="text" name="" id=""> <script type="text/javascript"> let oInput = document.querySelector("input"); // 1.监听input获取焦点 oInput.onfocus=function() { console.log("获取到了焦点"); } // 2
贵哥的编程之路
2020/10/28
1.2K0
Android系统线控和歌曲信息屏显的那点事
目前Android系统中主流的音乐播放器都支持线控的功能,线控设备包括有线耳机和蓝牙耳机或蓝牙车机,当不方便操作手机的时候可以通过线控来控制音乐的播放暂停以及切歌。 同时当音乐播放的时候部分手机(如小米)会在系统的锁屏页面上展示各种歌曲信息,如歌曲名,歌手名,专辑图片甚至歌词,同时还可以提供一些播放控制的操作。 这些都是如何实现的呢?其中是否有坑?下面慢慢道来。 AudioManager配合RemoteControlClient 在Android 5.0之前的版本中,Andr
QQ音乐技术团队
2018/01/31
2.9K0
Android系统线控和歌曲信息屏显的那点事
失去焦点和获得焦点发生事件(js)
{ alert(‘请确认您输入格式是否正确!‘); }
全栈程序员站长
2022/09/07
9.1K0
点击加载更多

相似问题

由于没有窗口焦点而丢弃事件: KeyEvent

10

由于没有窗口焦点,Android活动没有响应触摸事件删除事件

23

由于没有窗口焦点而取消事件: MotionEvent

23

由于窗口无焦点,正在删除事件

30

由于没有窗口焦点,取消事件时发生Android错误

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文