gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:27 25 4
gpt4 key购买 nike

我正在关注this tutorial关于如何使用 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 对象只会调用 Model._step() 方法一次。 tf.scan()函数,如tf.while_loop()它包装的函数将仅调用一次给定的函数来构建其中包含循环的图,然后相同的图将用于循环的每次迭代。

(请注意,如果您构造许多 Model 对象,您最终会得到与 Model 对象相同数量的图表副本。)

关于python - 这个函数每次都会创建一个新的 TensorFlow 图吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46735018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com