关于队列的相关知识,盗用一张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的更多相关文章

  1. TensorFlow函数:tf.FIFOQueue队列

    转载:https://blog.csdn.net/akadiao/article/details/78552037 tf.FIFOQueue tf.FIFOQueue继承基类QueueBase. Qu ...

  2. tf.FIFOQueue()

    Tensorflow–tf.FIFOQueue详解描述tf.FIFOQueue根据先进先出(FIFO)的原则创建一个队列.队列是Tensorflow的一种数据结构,每个队列的元素都是包含一个或多个张量 ...

  3. 【学习笔记】tensorflow队列和线程

    目录 Tensorflow队列 同步执行队列 队列管理器 异步执行队列 线程协调器 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 为了感受一下队列,让我们来看一个简单的例子.我们先 ...

  4. 吴裕雄 python 神经网络——TensorFlow 队列操作

    import tensorflow as tf q = tf.FIFOQueue(2, "int32") init = q.enqueue_many(([0, 10],)) x = ...

  5. tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数(转)

    tensorflow数据读取机制 tensorflow中为了充分利用GPU,减少GPU等待数据的空闲时间,使用了两个线程分别执行数据读入和数据计算. 具体来说就是使用一个线程源源不断的将硬盘中的图片数 ...

  6. tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数

    tensorflow数据读取机制 tensorflow中为了充分利用GPU,减少GPU等待数据的空闲时间,使用了两个线程分别执行数据读入和数据计算. 具体来说就是使用一个线程源源不断的将硬盘中的图片数 ...

  7. 【转载】 tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数

    原文地址: https://blog.csdn.net/dcrmg/article/details/79776876 ----------------------------------------- ...

  8. tfsenflow队列|tf.train.slice_input_producer|tf.train.Coordinator|tf.train.start_queue_runners

      #### ''' tf.train.slice_input_producer :定义样本放入文件名队列的方式[迭代次数,是否乱序],但此时文件名队列还没有真正写入数据 slice_input_pr ...

  9. 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法

    在计算loss的时候,最常见的一句话就是 tf.nn.softmax_cross_entropy_with_logits ,那么它到底是怎么做的呢? 首先明确一点,loss是代价值,也就是我们要最小化 ...

随机推荐

  1. python-MySQL数据库--- 基础篇

    MySQL数据库基础 数据库系统(database system) 1.数据库系统(database system)         数据库系统是计算机系统中一种专门管理数组资源的系统,数据库存储的是 ...

  2. Q480S-I7 D1 笔记本使用 VS2015 运行性能探查器会导致电脑自动重启?

    漏洞导致 https://www.freebuf.com/vuls/159642.html 使用以下两句 无法修复该问题,建议升级 win10 系统,使用 vs2017 reg add "H ...

  3. 自己做的html5手机站点

    这个站点採用html5+css3+jquerymobile 仅仅开发了前台的功能,前台的界面比較美观,后端不方便放上,各位有空能够自己开发这个站点的界面有參考各个菜谱站点的页面的样式,可是又不一样,是 ...

  4. 搞定Oracle SCN -system change number

    SCN是Oracle的内部时钟,用来反映数据库中所有变化,在运行过程中不断更新.SCN种类包括:      (1)系统当前SCN                   (2)Checkpoint SCN ...

  5. Metasploitable2使用指南

    Metasploitable2使用指南 Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击.版本2已经可以下载,并且比上一个版本包 ...

  6. 前端 ----- 初探ES6 Promise

    前段时间做项目,在调用接口的时候,遇到了异步问题.开始是使用定时器,发现效果并不理想,于是又用了回调,效果还好但是,很明显的影响了代码的整洁性. 于是我想起了在面试的那段时间,背过的面试题里,出现过一 ...

  7. 4.ireport基本使用

    转自:https://wenku.baidu.com/view/104156f9770bf78a65295462.html 第一部分,下载与安装 Ireport官网:http:// jasperfor ...

  8. smbumount - 为普通用户卸载smb文件系统

    总览 smbumount 装载点 描述 普通用户使用这个程序可以卸载smb文件系统.它在工作时会suid到root身份,并且向普通linux用户提供了对资源更多的控制能力.在suid方面,它拥有足够的 ...

  9. windows切换窗口和网页快捷键

    alt+tab 切换窗口win+D 显示桌面,再按一下返回运来的网页win+M 所有程序最小化 网页之间切换(我用的是360) ctrl + tab 往回切 ctrl + shift +tab

  10. python序列的深拷贝和浅拷贝

    python中的不可变类型 列举:数值,字符串.元组.字节串 数值及字符串“可变”'的假象 num = 123 mystr = 'abc' print(id(num), num) print(id(m ...