zoukankan      html  css  js  c++  java
  • 读数据思考

    最近看了下pytorch的数据读取接口,一个dataset,一个dataloader。相比tf的话,可以说抽象的好一些,但是tf的话封装集成的好一些。

    pytorch的话适合小数据集合的快速开发和实验。tf的话,更侧重工业级一点,一次调通之后,以后不需要经常变,性能的收益是比较好的。另外tf的生态好一些。一些性能优化的api都是很不错的。当然我只是粗浅的看了doc并且试用了一下,大概率fb或者其他企业级有内部用的话,有很多trick。

    pytorch的话,首先需要定一个dataset ,这个dataset(普通的dataset和迭代器的dataset)的主要作用是实现函数,来操作具体怎么读取一条数据。

    然后dataloader的话,就是具体实现batch和shuffle的作用。

    之前之前用tf的读取接口,从queue runner到 dataset,可是说用起来还是比较方便的。只要把读取的文件名称输入就行了,然后实现下解析数据的接口,可以说非常方便,没有怎么了解过读取的细节。这次看torch的读取,大概了解了读取的细节,想来两者实现上本周没有太大的区别。

    tf维护两个队列,文件列表和内存列表,一个线程读取文件内容往buf里写(并不是文件内容都读到内存里,而是一条一条读取),一个线程从buf里取数据送给gpu进行计算。shuffle里的buf_size写的就是内存的大小。tf的,prefetch主要是得到batch后,给gpu缓存的操作。保障gpu的使用率

  • 相关阅读:
    处在什么都想学,却又不知道怎么学的处境
    启动MongoDB shell客户端会什么会一闪而过
    Socket.io发送消息含义
    轮询、长轮询与Web Socket的前端实现
    org.apache.commons.lang3.StringUtils类中isBlank和isEmpty方法的区别
    JS学习笔记10_Ajax
    JS学习笔记9_JSON
    JS学习笔记8_错误处理
    JS学习笔记7_表单脚本
    JS学习笔记6_事件
  • 原文地址:https://www.cnblogs.com/dmesg/p/12718222.html
Copyright © 2011-2022 走看看