python - 如何在 tensorflow 中使用 tf.while_loop()

标签 python tensorflow

这是一个通用问题。我发现在 tensorflow 中,我们构建图之后,将数据提取到图中,图的输出是一个张量。但在很多情况下,我们需要根据这个输出(即一个tensor)做一些计算,这在tensorflow中是不允许的。

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

此外,在这种情况下,如果 future 的计算基于张量输出(例如:RNN 根据输出标准停止),这是非常常见的情况。有没有一种优雅的方式或者更好的方式来代替动态图?

最佳答案

是什么阻止了您为主体添加更多功能?您可以在正文中构建您喜欢的任何复杂计算图,并从封闭图中获取您喜欢的任何输入。此外,在循环之外,您可以使用返回的任何输出做任何您想做的事情。从“whatevers”的数量可以看出,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())

关于python - 如何在 tensorflow 中使用 tf.while_loop(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37441140/

相关文章:

python - 返回变量并分配属性

python - 从python中的日志文件行中提取数据

python - 我可以在 Keras 中定义两个不同的调用函数,一个用于正向映射,另一个用于反向映射

python - 使用 Spyder (Python) 中的变量资源管理器查看其他命名空间

python - 是否有一种 pythonic 方式来链接这些函数调用?

java - 如何将输入数据传递给 Java 中现有的 tensorflow 2.x 模型?

python - Tensorflow - 值错误 : Output tensors to a Model must be the output of a TensorFlow `Layer`

python - TensorFlow 中 KNN 实现的问题

tensorflow - 将 .tflite 转换为 .pb

python - 带有 WTforms 的 RECaptcha 不会呈现