tensorFlow数据输入

一、TensorFlow 数据的输入

  1. preloaded data : 预加载数据
  2. Feeding : pyhthon 产生数据,再把数据喂给后端
  3. Reading from file : 从文件中直接读取

Preload:

import tensorflow as tf

#define Graph
x1 = tf.constant([2,3,4])
x2 = tf.constant([4,0,1])
y  = tf.add(x1,x2)

#define session
with tf.Session() as sess:
    print sess.run(y)

Feeding:

import tensorflow as tf

#define Graph

x1 = tf.placeholder(tf.int16)
x2 = tf.placeholder(tf.int16)
y  = tf.add(x1,x2)

# python generate data
li1 = [2,3,4]
li2 = [4,0,1]

#session
with tf.Session() as sess:
    sess.run(y,feed_dict = {x1:li1,x2:li2})

Read from file :

一个典型的文件读取管线会包含下列的步骤:

  1. 文件名列表 [“file0”,”file1” …]
  2. 可配置的文件名乱序
  3. 可配置的最大迭代次数
  4. 文件名对列
  5. 针对输入文件格式的阅读器
  6. 记录的解析器
  7. 可配置的预处理器
  8. 样本队列
import tensorflow as tf

filename = os.path.join(os.getcwd(), file_name)
#产生文件队列, 可配置文件名和乱序
filename_queue = tf.train.string_input_producer([filenames],shuffle = True)
reader = tf.TextLineReader(skip_header_lines = 1)
#每一次 read 都会从文件中读取一行内容。
key , value = reader.read(filename_queue)

record_defaults = [[0],[0],[0],[0]]
#会解析这一行内容并将其转换为张量列表
decoded = tf.decode_csv(value , record_defaults = record_defaults)

with Session as sess:
    #coordinate这是负责在收到任何关闭信号的时候让所有的线程都知道
    coord = tf.train.Coordinator()
    #在调用run或者eval去执行read之前,必须先调用一下将文件名填充到队列中,否则read将会堵塞
    threads = tf.train.start_queue_runners(coord = coord)

批处理

在数据输入管线的末端,我们需要有另一个队列来执行输入样本的训练,评价和推理,因此我们使用

一下语句对队列中的样本进行乱序的处理。

 #min_after_dequeue defines how big a buffer we will randomly sample
  #   from -- bigger means better shuffling but slower start up and more
  #   memory used.
  # capacity must be larger than min_after_dequeue and the amount larger
  #   determines the maximum we will prefetch.  Recommendation:
  #   min_after_dequeue + (num_threads + a small safety margin) * batch_size

min_after_dequeue = 10000
capacity = min_after_dequeue + 3*batch_size
tf.train.shuffle_batch(decoded , batch_size = batch_size , capacity = capcity ,min_after_dequeue = batch_size)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值