tensorflow-队列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow-队列相关的知识,希望对你有一定的参考价值。
dequeue_many
dequeue_many(
? ? n,
? ? name=None
)
将队列中的n个元素出列并连接起来。
此操作将队列元素组件张量沿着零维度连接成单个组件张量。在零个维度中,出列元组中的所有组件的大小都为n。如果队列被关闭,并且还有小于n个元素,则引发一个OutOfRange异常。
在运行时,如果队列是tf.QueueBase.close。在执行之前或执行期间关闭,则此操作可能会引发错误。如果队列关闭,则队列包含少于n个元素,并且没有可以满足此请求的挂起的入列操作,即tf.error.OutOfRangeErrouqr。如果这个队列是tf.Session.close, tf.errors.CancelledError将被抛出。
参数:
n: 一个scalar Tensor,包括入列元素的数目
name: 操作的名字(可选)
返回:
tensors拼接生成的列表,这些列表将出列
enqueue
?
enqueue(
? ? vals,
? ? name=None
)
在队列里入列一个元素
当操作执行时,如果这个队列是满的则它将阻止,直到元素已被入队。
在运行时,如果队列在执行之前或执行过程中的队列是tf.QueueBase.close,则此操作可能会引发错误tf.errors.CancelledError。如果该操作被阻塞,并且要么(i)队列通过具有cancel_pending_enque.=True的闭合操作关闭,要么(ii)会话为tf.Session.close、f.errors.CancelledError将被触发。
参数:
vals:一个tensor,tensors的元组列表?,或包含入队值的字典。
name: 操作名字(可选)
返回:
将张量的新元组入列到队列的操作。
enqueue_many
?
enqueue_many(
? ? vals,
? ? name=None
)
将零或多个元素入队到此队列
该操作将每个分量张量沿零维切片,以形成多个队列元素。在零维中,所有在vals中的张量必须具有相同的大小。
如果此操作执行时队列已满,则它将阻塞,直到所有元素都已入队。
在运行时,如果队列在执行之前或执行过程中的队列是tf.QueueBase.close,如果在运行之前关闭该队列,则将引发tf.errors.CancelledError。如果该操作被阻塞,并且要么(i)队列通过具有cancel_pending_enqueues=True的闭合操作关闭,要么(ii)会话为tf.Session.close、tf.errors.CancelledError将被引发。
参数:
vals: 一个tensor,tensors元组的列表,或一个字典 从中获取队列元素的字典
name: A name for the operation (optional).
返回:
将张量的一批元组排到队列中的操作。
from_list
?
from_list(
? ? index,
? ? queues
)
从queues[index]中使用队列引用创建队列
参数:
index: 一个整数标量,决定输入选择范围
queues: 一个QueueBase对象列表
返回:
一个QueueBase对象
抛出:
TypeError: 当queues不是queues对象的列表,或当queues数据类型并非都相同。
is_closed
?
is_closed(name=None)
如果队列关闭,返回true。
如果队列是关闭的,此操作返回true;如果队列是打开的,则返回false。
参数:
name: 操作名称(可选)
返回:
如果队列是关闭的,此操作返回true;如果队列是打开的,则返回false。
size
?
size(name=None)
计算队列元素数量
参数:
name: 操作名(可选)
返回:
标量张量,包括队列元素数量
dequeue_up_to
?
dequeue_up_to(
? ? n,
? ? name=None
)
从队列中出列并拼接n个元素。
注:此操作不受所有队列的支持。如果队列不支持DequeueUpTo,则引发一个tf.errors.UnimplementedError。
此操作将队列元素组件张量沿着零维连接成单个组件张量。如果队列尚未关闭,则在零维度中,队列中的元组中的所有组件都将具有大小N。
如果队列关闭,并且剩余的元素多于0但少于n个,则立即返回少于n个的元素,而不是引发tf.error.OutOfRangeError,像tf.QueueBase.dequeue_many。如果队列关闭,并且队列中剩余的元素为0,tf.errors.OutOfRangeError将被抛出,就像就像dequeue_many中一样。否则行为与dequeue_many一样。
参数:
n: 一个标量Tensor,包含出列元素的数目。
name: A name for the operation (optional).
返回:
拼接出列tensors的元组,
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: myhaspl
"""
import tensorflow as tf
n = 100
xQueue=tf.FIFOQueue(100,tf.int32)
with tf.Session() as sess:
for i in xrange(n):
if i%3==0:
sess.run(xQueue.enqueue(i))
xLen=sess.run(xQueue.size())
mySum=0
print
for i in range(xLen):
myx=sess.run(xQueue.dequeue())
print myx,
mySum+=myx
print
print mySum
0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
1683
求被3整除的100以内数之和
下面列出1-4的数字
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: myhaspl
"""
import tensorflow as tf
with tf.Session() as sess:
queue = tf.FIFOQueue(100, dtypes=[tf.int32], shapes=[()])
enqueue_op = queue.enqueue_many([[1, 2,3,4]])
inputs = queue.dequeue_many(4)
sess.run(enqueue_op)
sess.run(enqueue_op)
print sess.run(inputs)
[1 2 3 4]
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: [email protected]
"""
import tensorflow as tf
n = 100
xQueue=tf.FIFOQueue(100,dtypes=[tf.int32],shapes=[])
with tf.Session() as sess:
for i in xrange(n):
if i%3==0:
sess.run(xQueue.enqueue(i))
xLen=sess.run(xQueue.size())
myx=sess.run(xQueue.dequeue_many(xLen))
print myx
print sum(myx)
[ 0 3 6 ... 93 96 99]
1683
上面求100以内被3整除的数之和
以上是关于tensorflow-队列的主要内容,如果未能解决你的问题,请参考以下文章