我用TF操作创建了一个函数,该函数用tf.data.Dataset.map()
调用以将输入数据转换为模型。在该函数内部,创建一个tf.Variable
并分配给它。初始化变量时,TF抱怨变量的初始化操作不是图形的元素,或者变量与其他变量不属于同一图形。对于解决此问题的任何帮助,我们将不胜感激。
在这里您可以看到一些玩具代码来重现该问题(TF 1.12):
import tensorflow as tf
def fun(x):
f = tf.Variable(tf.ones((1,), dtype=tf.int64), name='test')
op = f.assign(x, name='test_assign')
with tf.control_dependencies([op]):
f = tf.identity(f)
return f
def generator():
while True:
yield [2]
ds = tf.data.Dataset.from_generator(generator,
output_shapes=tf.TensorShape([1,]), output_types=tf.int64)
ds = ds.map(fun)
iterator = ds.make_one_shot_iterator()
y = iterator.get_next()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for _ in range(5):
print(sess.run(y)