tensorflow队列tf.FIFOQueue | enqueue | enqueue_many | dequeue | dequeue_many
关于队列的相关知识,盗用一张https://blog.csdn.net/HowardWood/article/details/79406891的动态图

import tensorflow as tf
import time
#
q = tf.FIFOQueue(3,'float') ###创建先入先出的队列
init = q.enqueue_many([[0.,0.,0.],]) ###[[0.,0.,0.],]的第0个以及元素为[0.,0.,0.],将[0.,0.,0.]的元素连入队
x = q.dequeue() ###出列一个元素
y = x+1
q_inc = q.enqueue([y]) ###单个数列[y]入队
with tf.Session() as sess: ###开启会话执行以上定义的操作
init.run() ###初始化列队(列队中加入3个0)
for _ in range(10): ###出列 入列 循环操作
v,_ = sess.run([x,q_inc]) ###执行x = q.dequeue 出列 空出一个位置,执行入列 q.enqueue([y])
time.sleep(2)
print(v)
# print(_)
'''
0.0
0.0
0.0
1.0
1.0
1.0
2.0
2.0
2.0
3.0
'''
动态图代码复现
###[[3.,2.,1.],[11.,22.,33.],[111.,222.,333.]]的第一个一级元素[3.,2.,1.]入队
# ###张量(数组)
input_data = [[3.,2.,1.],[11.,22.,33.],[111.,222.,333.]]
##创建一个先入先出队列
q = tf.FIFOQueue(3,dtypes=[tf.float32])
###入队---一次入队一个张量
init=q.enqueue(input_data)
###出队----一次出队一个张量
output_data = q.dequeue()
with tf.Session() as sess:
###入队操作3次(如果四次入队,而创建的队列长度为3,在入队3次后,没有出队操作,入队操作将会被阻止)
init.run()
init.run()
init.run()
##出队操作3次(如果队列里面没有数据,操作会被阻止,直到队列里面有一个数字)
print('1:',sess.run(output_data))
print('2:', sess.run(output_data))
print('3:', sess.run(output_data))
sess.run(q.close(cancel_pending_enqueues=True))
print(sess.run(q.is_closed()))
'''
输出:
1: [ 3. 2. 1.]
2: [ 3. 2. 1.]
3: [ 3. 2. 1.]
'''
enqueue and dequeue
#1.队列中元素的个数,小于出队操作的次数 --- 程序会被阻止(暂停等待),直到有队列中有元素
# ###张量(数组)
input_data = [[3.,2.,1.],[11.,22.,33.],[111.,222.,333.]]
##创建一个先入先出队列
q = tf.FIFOQueue(3,dtypes=[tf.float32])
###入队---一次入队一个张量
init=q.enqueue(input_data)
###出队----一次出队一个张量
output_data = q.dequeue()
with tf.Session() as sess:
###入队操作3次(如果四次入队,而创建的队列长度为3,在入队3次后,没有出队操作,入队操作将会被阻止)
init.run()
init.run()
# init.run() 只执行了两次入队操作,队列中有两个元素 print('1:',sess.run(output_data))
print('2:', sess.run(output_data))
print('3:', sess.run(output_data)) ##出队操作3次(如果队列里面没有数据,操作会被阻止,直到队列里面有一个数字)
sess.run(q.close(cancel_pending_enqueues=True))
print(sess.run(q.is_closed()))
'''
输出:
1: [ 3. 2. 1.]
2: [ 3. 2. 1.]
之后等待
'''
异常

##将数组的第一个以及元素的以及元素作为分别的元素,一次入队n个
input_data=[[3.,2.,1.],[11.,22.,33.],[111.,222.,333.]]
print(tf.shape(input_data))
q=tf.FIFOQueue(3,dtypes=[tf.float32],shapes=[[]])
init=q.enqueue_many(input_data)
output_data=q.dequeue()
with tf.Session() as sess:
init.run() ##入队一次(3个元素)
print('1:',sess.run(output_data))
print('2:',sess.run(output_data))
print('3:',sess.run(output_data))
sess.run(q.close(cancel_pending_enqueues=True))
print(sess.run(q.is_closed()))
'''
1: 3.0
2: 2.0
3: 1.0
True
'''
enqueue_many and dequeue
tensorflow队列tf.FIFOQueue | enqueue | enqueue_many | dequeue | dequeue_many的更多相关文章
- TensorFlow函数:tf.FIFOQueue队列
转载:https://blog.csdn.net/akadiao/article/details/78552037 tf.FIFOQueue tf.FIFOQueue继承基类QueueBase. Qu ...
- tf.FIFOQueue()
Tensorflow–tf.FIFOQueue详解描述tf.FIFOQueue根据先进先出(FIFO)的原则创建一个队列.队列是Tensorflow的一种数据结构,每个队列的元素都是包含一个或多个张量 ...
- 【学习笔记】tensorflow队列和线程
目录 Tensorflow队列 同步执行队列 队列管理器 异步执行队列 线程协调器 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 为了感受一下队列,让我们来看一个简单的例子.我们先 ...
- 吴裕雄 python 神经网络——TensorFlow 队列操作
import tensorflow as tf q = tf.FIFOQueue(2, "int32") init = q.enqueue_many(([0, 10],)) x = ...
- tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数(转)
tensorflow数据读取机制 tensorflow中为了充分利用GPU,减少GPU等待数据的空闲时间,使用了两个线程分别执行数据读入和数据计算. 具体来说就是使用一个线程源源不断的将硬盘中的图片数 ...
- tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数
tensorflow数据读取机制 tensorflow中为了充分利用GPU,减少GPU等待数据的空闲时间,使用了两个线程分别执行数据读入和数据计算. 具体来说就是使用一个线程源源不断的将硬盘中的图片数 ...
- 【转载】 tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数
原文地址: https://blog.csdn.net/dcrmg/article/details/79776876 ----------------------------------------- ...
- tfsenflow队列|tf.train.slice_input_producer|tf.train.Coordinator|tf.train.start_queue_runners
#### ''' tf.train.slice_input_producer :定义样本放入文件名队列的方式[迭代次数,是否乱序],但此时文件名队列还没有真正写入数据 slice_input_pr ...
- 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
在计算loss的时候,最常见的一句话就是 tf.nn.softmax_cross_entropy_with_logits ,那么它到底是怎么做的呢? 首先明确一点,loss是代价值,也就是我们要最小化 ...
随机推荐
- xml&dom_sax&dom4j的常见操作
<? xml version =”1.0” encoding=”GB2312”?> <!-- 学生信息—><?xml-stylesheet type=”text/css” ...
- k3 cloud中列表字段汇总类型中设置了汇总以后没有显示出汇总值
处理方法,需要bos中的分组列信息中设置求和: 选择对应字段将其从左侧添加到右侧 方法二: 直接针对[价税合计]字段的列表汇总类型进行设置,步骤如下图所示
- 为什么需要在 React 类组件中为事件处理程序绑定this?
https://juejin.im/post/5afa6e2f6fb9a07aa2137f51 事件绑定作为回调函数参数传递给函数,丢失其上下文,执行的是默认绑定,不是隐式绑定 类声明和类表达式的主体 ...
- 64-基于TMS320C6455、XC5VSX95T 的6U CPCI无线通信处理平台
基于TMS320C6455.XC5VSX95T 的6U CPCI无线通信处理平台 1. 板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合PICMG2.0 D3.0标准,包含双TI TMS3 ...
- javaweb各种框架组合案例(四):maven+spring+springMVC+spring data jpa(hibernate)【失败案例】
一.失败案例 1. 控制台报错信息 严重: Exception sending context initialized event to listener instance of class org. ...
- Zabbix学习笔记(yum源安装)
Zabbix学习笔记(yum源安装) 链接:https://pan.baidu.com/s/19RXhumkB-ulpI4BGOa5b_A 提取码:115h 复制这段内容后打开百度网盘手机App,操作 ...
- Winfrom 弹出窗体位置设定
Winfrom 窗体弹出位置设定,其实就是两种模式,第一种模式是通过Winform提供的属性来设定:第二种模式是自定义,可以相对于软件本身,也可以是相对于屏幕. 一.第一种模式 使用Winform提供 ...
- runltp出现问题 [
runltp 623行: if [ "$?" == "0" ]; then 对[解析出了问题. 我灵机一动,是不是sh的问题. which sh /bin/sh ...
- C#高级编程笔记(17至21章节)线程/任务
17 Visual Studio 2013 控制台用Ctrl+F5可以显示窗口,不用加Console.ReadLine(); F5用于断点调式 程式应该使用发布,因为发布的程序在发布时会进行优化, 2 ...
- linux学习-用户组与权限管理
一.用户与组 1.用户 管理员:root,UID为0 普通用户:1-60000 自动分配 系统用户:1-499,1-999(Centos7),对守护进程分配获取资源进行权限分配 登录用户:500+,1 ...