繁体   English   中英

这个函数每次都会创建一个新的 TensorFlow 图吗?

[英]Is this function creating a new TensorFlow graph each time?

我正在关注有关如何使用tf.scan教程,并编写了一个最小的工作示例(请参阅下面的代码)。 但是每次调用函数Model._step() ,不是创建了另一个计算图的副本吗? 如果没有,为什么不呢?

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2' # to avoid TF suggesting SSE4.2, AVX etc...

class Model():
    def __init__(self):
        self._inputs = tf.placeholder(shape=[None], dtype=tf.float32)
        self._predictions = self._compute_predictions()

    def _step(self, old_state, new_input):
        # ---- In here I will write a much more complex graph ----
        return old_state + new_input

    def _compute_predictions(self):
        return tf.scan(self._step, self._inputs, initializer = tf.Variable(0.0))

    @property
    def predictions(self):
        return self._predictions

    @property
    def inputs(self):
        return self._inputs

def test(sess, model):
    sess.run(tf.global_variables_initializer())
    print(sess.run(model.predictions, {model.inputs: [1.0, 2.0, 3.0, 4.0]}))

test(tf.Session(), Model())

我问是因为这当然是一个最小的例子,在我的情况下,我需要一个更复杂的图。

Model._step()方法只会在每个构建的Model对象中调用一次。 tf.scan()函数,就像它包装的tf.while_loop()函数一样,只会调用给定的函数一次来构建一个带有循环的图,然后每次迭代都会使用相同的图的循环。

(请注意,如果你构建许多Model对象,您将结束与相同数量的图的副本,你有Model对象。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM