张量流动态循环的最佳实践?

时间:2017-11-20 04:51:03

标签: python tensorflow

我想实现一个两轮for循环。

使用tf.while_loop

发现很难做到

通过tensorflow实现两轮for循环的最佳方法是什么?

我希望它可能是这样的:

import tensorflow as tf

a = tf.constant([1,2,3,4,5])
b = tf.constant([1,2,3,4,5])

sess = tf.Session()

for i in tf.range(tf.constant(0),tf.shape(a)[0]):
    for j in tf.range(tf.constant(0),tf.shape(b)[0]):
        print(sess.run([i,j]))

有可能吗?

1 个答案:

答案 0 :(得分:2)

您没有指定所需的行为,但我的猜测是您粘贴的代码不会达到预期效果。以下是您的一些选择:

  • 使用tf.while_loop。这将构造一个带有while循环的图形。运行这样的图形时,它将使用CPU或GPU在C ++运行时高效运行。
  • 使用常规python循环(for i in range(10):)并对session.run()进行多次调用。这样,在调用session.run()之间需要执行的任何操作都将在python中发生并且可能很慢。例如,传递给session.run()的输出张量将复制到CPU内存(如果主计算在GPU上完成)。通常不鼓励采用这种方法。
  • 使用最近发布的eager execution - “文档”部分中有更多文档的链接。急切执行允许您使用任意python代码进行控制流程,但所有操作仍在CPU / GPU上有效完成。