本文主要是介绍tensorflow笔记 string_input_producer, slice_input_producer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
tensorflow将读取数据分为了两个步骤,先读入文件名队列,再读入内存队列进行运算。为了减少GPU的等待时间,提高计算速度,tensorflow使用两个线程来分别处理这两个步骤。tf有三个函数string_input_producer, slice_input_producer, input_producer用于建立文件名队列。
函数参数如下所示,除了tensor list是必须外,其余都可以省略。input_producer输入为一个tensor,每行是一个数据,slice_input_producer输入为一个tensor列表,string_input_producer输入为一个string类型的tensor列表。
tf.train.input_producer(input_tensor,element_shape=None,num_epochs=None, #文件名队列中数据重复n次,保证每个文件都会被访问n次shuffle=True,seed=None,capacity=32,shared_name=None,summary_name=None,name=None,cancel_op=None
)tf.train.string_input_producer(string_tensor,num_epochs=None,shuffle=True,seed=None,capacity=32,shared_name=None,name=None,cancel_op=None
)tf.train.slice_input_producer(tensor_list,num_epochs=None,shuffle=True,seed=None,capacity=32,shared_name=None,name=None
)
文件名队列并不会直接读入,需要用tf.train.start_queue_runners()启动
threads = tf.train.start_queue_runners(sess,coord)
官方建议:
THIS FUNCTION IS DEPRECATED. It will be removed in a future version. Instructions for updating: Queue-based input pipelines have been replaced by tf.data. Use tf.data.Dataset.from_tensor_slices(input_tensor).shuffle(tf.shape(input_tensor, out_type=tf.int64)[0]).repeat(num_epochs). If shuffle=False, omit the .shuffle(...)
现在一般使用更简洁的data api来读取数据。
这篇关于tensorflow笔记 string_input_producer, slice_input_producer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!