TensorFlow加载数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow加载数据相关的知识,希望对你有一定的参考价值。
1、Preload方式
将数据直接内嵌到Graph中,再把Graph传入Session中运行。当数据量比较大时,Graph的传输会遇到效率问题。
import tensorflow as tf # 设计训练模型Graph x1 = tf.constant([2, 3, 4]) x2 = tf.constant([4, 0, 1]) y = tf.add(x1, x2) # 打开一个session --> 计算y with tf.Session() as sess: print(sess.run(y))
输出:
[6 3 5]
注:在设计Graph的时候,x1和x2就被定义成了两个有值的列表,在计算y的时候直接取x1和x2的值。
2、Feeding方式
用占位符替代数据,待运行的时候填充数据。
import tensorflow as tf # 设计Graph x1 = tf.placeholder(tf.int32) x2 = tf.placeholder(tf.int32) y = tf.add(x1, x2) # 用Python产生数据 input1 = [2, 3, 4] input2 = [4, 0, 1] # 打开一个session --> 喂数据 --> 计算y with tf.Session() as sess: print (sess.run(y, feed_dict={x1: input1, x2: input2}))
输出:
[6 3 5]
注:在这里x1, x2只是占位符,没有具体的值,那么运行的时候就要用到sess.run()中的feed_dict参数,将Python产生的数据喂给后端,并计算y。
3、Reading From File
前两种方法很方便,但是遇到大型数据的时候就会很吃力,即使是Feeding,中间环节的增加也是不小的开销,比如数据类型转换等等。最优的方案就是在Graph定义好文件读取的方法,让TF自己去从文件中读取数据,并解码成可使用的样本集。
首先由一个单线程把文件名堆入队列,两个Reader同时从队列中取文件名并读取数据,Decoder将读出的数据解码后堆入样本队列,最后单个或批量取出样本(图中没有展示样本出列)。
本文出自 “IT技术学习与交流” 博客,谢绝转载!
以上是关于TensorFlow加载数据的主要内容,如果未能解决你的问题,请参考以下文章