如何在张量流中使用tf.while_loop()
python
tensorflow
4
0

这是一个普遍的问题。我发现在张量流中,构建图后,将数据提取到图中,图的输出是张量。但是在许多情况下,我们需要基于此输出(即tensor )进行一些计算,这在tensor中是不允许的。

例如,我正在尝试实现一个RNN,该RNN根据数据自身属性来循环时间。也就是说,我需要使用tensor来判断是否应该停止(我不使用dynamic_rnn,因为在我的设计中rnn是高度定制的)。我发现tf.while_loop(cond,body.....)可能是我的实现的候选人。但是官方教程太简单了。我不知道如何在“主体”中添加更多功能。谁能给我几个更复杂的例子?

同样,在将来的计算基于张量输出的情况下(例如:基于输出准则的RNN停止),这是非常常见的情况。有没有一种优雅的方法或更好的方法来代替动态图?

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

是什么阻止您向身体添加更多功能?您可以在主体中构建任何喜欢的复杂计算图,并从封闭图中获取任何喜欢的输入。同样,在循环之外,您也可以使用返回的任何输出执行任何所需的操作。从大量内容中可以看出,TensorFlow的控制流原语在构建时考虑了很多通用性。如果有帮助,下面是另一个“简单”示例。

import tensorflow as tf
import numpy as np

def body(x):
    a = tf.random_uniform(shape=[2, 2], dtype=tf.int32, maxval=100)
    b = tf.constant(np.array([[1, 2], [3, 4]]), dtype=tf.int32)
    c = a + b
    return tf.nn.relu(x + c)

def condition(x):
    return tf.reduce_sum(x) < 100

x = tf.Variable(tf.constant(0, shape=[2, 2]))

with tf.Session():
    tf.global_variables_initializer().run()
    result = tf.while_loop(condition, body, [x])
    print(result.eval())
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号