如果有图会很好理解,最近太忙,以后再加吧
  1. #首先有一个需要读取的文件名列表
    #然后将文件名列表通过函数string_input_producer放进文件名队列。
    #有时候因为数据量太大,需要把他们放进不同的tfrecord文件中
    filename_queue = tf.train.string_input_producer(["file0.csv","file1.csv"])
    #对不同格式的文件有不同的reader
    reader = tf.TextLineReader()
    #通过reader的read函数extract a record from a file whose name is in the queue,
    #如果该文件中所有记录都被抽取完,dequeue这个filename,参考readerbase
    #read()返回下一个record
    key, value = reader.read(filename_queue)
    # decoded record,decode方式和文件内部record格式相关,然后拼接成需要的格式
    record_defaults =[[1],[1],[1],[1],[1]]
    col1, col2, col3, col4, col5 = tf.decode_csv(
    value, record_defaults=record_defaults)
    features = tf.stack([col1, col2, col3, col4])
    with tf.Session()as sess:
    # Start populating the filename queue.
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)
    for i in range(1200):
    # Retrieve a single instance:
    example, label = sess.run([features, col5])
    coord.request_stop()
    coord.join(threads)

    参考:https://www.tensorflow.org/programmers_guide/reading_data


提到queue就不得不提两个帮助多线程异步的类:tf.train.Coordinator和tf.train.QueueRunner;
  • tf.train.Coordinator:控制多线程,使其同时结束。
  • tf.train.QueueRunner:包含一些enqueue op,为其create一些线程,每一个op都在一个线程上运行。

coordinator

Coordinator方法:should_stop,request_stop,join
    1.  # Thread body: loop until the coordinator indicates a stop was requested.
      # If some condition becomes true, ask the coordinator to stop.
      defMyLoop(coord):
      whilenot coord.should_stop():#should_stop返回true or false,表示线程是否该结束
      ...do something...
      if...some condition...:
      coord.request_stop()#当某些条件发生时,一个进程request_stop,其他进程因为should_stop返回true而终止
      # Main thread: create a coordinator.
      coord = tf.train.Coordinator()
      # Create 10 threads that run 'MyLoop()'
      threads =[threading.Thread(target=MyLoop, args=(coord,))for i in xrange(10)]
      # Start the threads and wait for all of them to stop.
      for t in threads:
      t.start()
      coord.join(threads)

QueueRunner

  1.  example =...ops to create one example...
    # Create a queue, and an op that enqueues examples one at a time in the queue.
    #区别于filename queue,这是example queue。可以是接着上面读数据解析然后放进这个queue
    queue = tf.RandomShuffleQueue(...)
    enqueue_op = queue.enqueue(example)#定义入队操作
    # Create a training graph that starts by dequeuing a batch of examples.
    inputs = queue.dequeue_many(batch_size)
    train_op =...use 'inputs' to build the training part of the graph...
    # Create a queue runner that will run 4 threads in parallel to enqueue
    # examples.
    #QueueRunner的构造函数,queuerunner是为一个queue的入队操作多线程化服务的,
    #第二个参数是入队操作列表
    qr = tf.train.QueueRunner(queue,[enqueue_op]*4)
    # Launch the graph.
    sess = tf.Session()
    # Create a coordinator, launch the queue runner threads.
    coord = tf.train.Coordinator()
    #queuerunner为queue创造多线程,并且把这些线程的结束交由coordinator管理
    enqueue_threads = qr.create_threads(sess, coord=coord, start=True)
    # Run the training loop, controlling termination with the coordinator.
    for step in xrange(1000000):
    if coord.should_stop():
    break
    sess.run(train_op)
    # When done, ask the threads to stop.
    coord.request_stop()
    # And wait for them to actually do it.
    coord.join(enqueue_threads)
未完待续。。。

reading from files的更多相关文章

  1. Reading Csv Files with Text_io in Oracle D2k Forms

    Below is the example to read and import comma delimited csv file in oracle forms with D2k_Delimited_ ...

  2. reading/writing files in Python

    file types: plaintext files, such as .txt .py Binary files, such as .docx, .pdf, iamges, spreadsheet ...

  3. Reading Text-based Files In ASP.NET

    Friday, July 17, 2015 1:43 PM Every time I need to work with the contents of text-based files in an ...

  4. PHP | Uploading and reading of files and database 【PHP | 文件的上传和读取与数据库】

    这是我自己的一个作业,用的是很基础的代码. 有错误的地方欢迎批评和指正! 这里最容易出错的地方在读取数据后向数据库表中插入数据是的数据格式! 文件上传的页面 uploading.php <htm ...

  5. Using Text_IO To Read Files in Oracle D2k

    Suppose you want to read a file from D2k client and want to store its content in Oracle database. Bu ...

  6. Fast data loading from files to R

    Recently we were building a Shiny App in which we had to load data from a very large dataframe. It w ...

  7. 解决javascript - node and Error: EMFILE, too many open files

    For some days I have searched for a working solution to an error Error: EMFILE, too many open files ...

  8. (转)使用 SCons 轻松建造程序

    在软件项目开发过程中,make 工具通常被用来建造程序.make 工具通过一个被称为 Makefile 的配置文件可以自动的检测文件之间的依赖关系,这对于建造复杂的项目非常有帮助,然而,编写 Make ...

  9. linux使用wkhtmltopdf报错error while loading shared libraries:

    官网提示 linux需要这些动态库.depends on: zlib, fontconfig, freetype, X11 libs (libX11, libXext, libXrender) 在li ...

随机推荐

  1. 【HDU 1599】 Find the mincost route

    [题目链接] 点击打开链接 [算法] 弗洛伊德求最小环模板 我们知道,在一个环上,一定有一个有且仅有一个编号最大的点,设这个点为k,起点为i,终点为j,那么 mincost = dist[i][j] ...

  2. list:[::5]

    0-99的数列 L = [0, 1, 2, 3, ..., 99] 所有数,每5个取一个 >>> L[::5] [0, 5, 10, 15, 20, 25, 30, 35, 40, ...

  3. 关于solr云相关知识

    1.认识系统架构 1.1.集群概述 1.1.1.单点服务器的问题 我们之所以要学习集群,是因为单点服务器,存在一系列的问题. 我们以前学习的JavaEE项目,都是部署在一台Tomcat上,所有的请求, ...

  4. An internal error occurred during: "Launching MVC on Tomcat 6.x". java.lang.NullPointerException

    有的时候打开Myeclispe莫名奇妙的就出现了这样的问题: An internal error occurred during: "Launching MVC on Tomcat  6.x ...

  5. bzoj 4552: [Tjoi2016&Heoi2016]排序【二分+线段树】

    二分值mid,然后把>=mid的赋值为1,其他赋值为0,每次排序就是算出区间内01的个数,然后分别把0和1放到连续的一段内,这些都可以用线段树来维护 二分的判断条件是操作完之后q位置上是否为1 ...

  6. 洛谷 P2764 最小路径覆盖问题【匈牙利算法】

    经典二分图匹配问题.把每个点拆成两个,对于原图中的每一条边(i,j)连接(i,j+n),最小路径覆盖就是点数n-二分图最大匹配.方案直接顺着匹配dsf.. #include<iostream&g ...

  7. CF896C Willem, Chtholly and Seniorious(珂朵莉树)

    中文题面 珂朵莉树的板子……这篇文章很不错 据说还有奈芙莲树和瑟尼欧里斯树…… 等联赛考完去学一下(逃 //minamoto #include<bits/stdc++.h> #define ...

  8. quickpow || 快速幂

    洛谷例题 推荐自行脑补:百度百科 如果  ,那么 : 前言:快速幂就是快速算底数的n次幂.其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高. 拿题目样例 Input :2 1 ...

  9. ROS学习笔记十二:使用gazebo在ROS中仿真

    想要在ROS系统中对我们的机器人进行仿真,需要使用gazebo. gazebo是一种适用于复杂室内多机器人和室外环境的仿真环境.它能够在三维环境中对多个机器人.传感器及物体进行仿真,产生实际传感器反馈 ...

  10. poj 3253 Fence Repair (水哈夫曼树)

    题目链接: http://poj.org/problem?id=3253 题目大意: 有一根木棍,需要截成n节,每节都有固定的长度,一根长度为x的木棒结成两段,需要花费为x,问截成需要的状态需要最小的 ...