python-tensorflow Coordinate和QueueRunner配合管理队列-注入数据
发布日期:2021-11-05 07:52:18
浏览次数:25
分类:技术文章
本文共 2827 字,大约阅读时间需要 9 分钟。
转发:
第一种,利用FIFOQueue构建队列,然后enqueue_many出来,构成tensor列表
import tensorflow as tfq = tf.FIFOQueue(10, [tf.int32,tf.int32,tf.int32])init = q.enqueue_many(([[0], [10], [20]] ))
x类型是一个tensor list
第二种,利用tf.train.slice_input_producer向文件名队列写数据
tf.train.slice_input_producer是一个tensor生成器,作用是按照设定,每次从一个tensor列表中按顺序或者随机抽取出一个tensor放入文件名队列。
slice_input_producer(tensor_list, num_epochs=None, shuffle=True, seed=None, capacity=32, shared_name=None, name=None)
第一个参数 tensor_list:包含一系列tensor的列表,表中tensor的第一维度的值必须相等,即个数必须相等,有多少个图像,就应该有多少个对应的标签。
第二个参数num_epochs: 可选参数,是一个整数值,代表迭代的次数,如果设置 num_epochs=None,生成器可以无限次遍历tensor列表,如果设置为 num_epochs=N,生成器只能遍历tensor列表N次。 第三个参数shuffle: bool类型,设置是否打乱样本的顺序。一般情况下,如果shuffle=True,生成的样本顺序就被打乱了,在批处理的时候不需要再次打乱样本,使用 tf.train.batch函数就可以了;如果shuffle=False,就需要在批处理时候使用 tf.train.shuffle_batch函数打乱样本。 第四个参数seed: 可选的整数,是生成随机数的种子,在第三个参数设置为shuffle=True的情况下才有用。 第五个参数capacity:设置tensor列表的容量。 第六个参数shared_name:可选参数,如果设置一个‘shared_name’,则在不同的上下文环境(Session)中可以通过这个名字共享生成的tensor。 第七个参数name:可选,设置操作的名称。 tf.train.slice_input_producer定义了样本放入文件名队列的方式,包括迭代次数,是否乱序等,要真正将文件放入文件名队列,还需要调用tf.train.start_queue_runners 函数来启动执行文件名队列填充的线程,之后计算单元才可以把数据读出来,否则文件名队列为空的,计算单元就会处于一直等待状态,导致系统阻塞。import tensorflow as tf images = ['img1', 'img2', 'img3', 'img4', 'img5']labels= [1,2,3,4,5] epoch_num=8 f = tf.train.slice_input_producer([images, labels],num_epochs=None,shuffle=False) #images labels是tensor列表 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord) #启动线程 for i in range(epoch_num): k = sess.run(f) print('************************') print (i,k) coord.request_stop() coord.join(threads)
************************0 [b'img1', 1]************************1 [b'img2', 2]************************2 [b'img3', 3]************************3 [b'img4', 4]************************4 [b'img5', 5]************************5 [b'img1', 1]************************6 [b'img2', 2]************************7 [b'img3', 3]
第三种,利用tf.train.string_input_producer向文件名队列写.csv数据
实际上,就是将slice换成了string
file_queue = tf.train.string_input_producer(filename, shuffle=True, num_epochs=2)reader = tf.WholeFileReader()key, value = reader.read(file_queue)
import tensorflow as tffilename = ['A.csv', 'B.csv', 'C.csv']file_queue = tf.train.string_input_producer(filename, shuffle=True, num_epochs=2)reader = tf.WholeFileReader()key, value = reader.read(file_queue)with tf.Session() as sess: sess.run(tf.local_variables_initializer()) coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess,coord=coord) for i in range(6): print(sess.run([key, value])) # 使用tf.train.Coordinator来停止所有线程 coord.request_stop() # 等待所有线程执行完毕 coord.join(threads)
.csv中数据
还需要解码!!
转载地址:https://blog.csdn.net/xingghaoyuxitong/article/details/114677797 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年03月04日 10时13分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
k8s边缘节点_边缘计算容器及K8S应用的三种场景及部署选项
2019-04-21
诸葛io的技术架构图_基于泳道技术生成“无数”个测试环境
2019-04-21
互相引用 spring_# 技术笔记:spring、springBoot源码解析
2019-04-21
华为发布岳云鹏手机_鸿蒙2.0正式发布:明年华为手机全面升级
2019-04-21
ifpc挖filecoin_Filecoin挖矿分析全套 不容错过的干货
2019-04-21
python扫雷 高级算法_Python玩转算法—扫雷
2019-04-21
牛客网python测试考试答案_牛客网SQL题库之考试分数
2019-04-21
git获取所有branch_使用jGit 通过gitUrl 获取Git的所有分支
2019-04-21
mysql like 数字结尾_重拾MySQL之正则表达式
2019-04-21
mysql 重置密码_mysql忘记密码如何重置密码,以及修改root密码的三种方法
2019-04-21
python中两个时间相减结果转为小时_Python起步(二)基础数据类型1
2019-04-21
定义泛化。举个例子_网易考拉应用的dubbo泛化调用,是如何实现的?
2019-04-21
mysql里可以用cube吗_sql server的cube操作符使用详解_mysql
2019-04-21
php mysql 图书_使用PHP+MySQL来对图书管理系统进行构建
2019-04-21
单片机c语言 int1,51单片机into、int1中断计数c语言源程序.doc
2019-04-21
c语言课程设计工资管理建库,C语言课程设计工资管理系统参考.doc
2019-04-21