gpt4 book ai didi

python - 如何在 tf.while_loop 中使用 tf.scatter_update

转载 作者:行者123 更新时间:2023-12-01 07:51:20 29 4
gpt4 key购买 nike

我有 tf.while_loop ,其中它基于 tf.Variable 内的元素进行调节。问题是当我使用 tf.scatter_update 时,我收到以下错误消息(注意:当我使用 tf.add 时它工作正常):

---> 11   var = tf.scatter_update(var, [0], tf.add(var, tf.constant([1.0])))

AttributeError: 'Tensor' object has no attribute '_lazy_read'

简化的代码如下(注意:我不能使用tf.add,因为我只想更新变量张量内的一个元素,所以我必须使用tf.scatter_update):

def func(var1, cons):
var1, _ = tf.while_loop(cond, body, [var1, x], return_same_structure=True)
with tf.control_dependencies([var1, _]):
return var1

def cond(var, cons):
return tf.reduce_all(tf.less(var,cons))

def body(var, cons):
var = tf.scatter_update(var, [0], tf.add(var, tf.constant([1.0])))
# Works fine when using --> var = tf.add(var, tf.constant([1.0]))
return (var, cons)

with tf.Session() as sess:
x = tf.constant([10.0])
m = tf.Variable([2.0])
b = func(m, x)
init = tf.initialize_all_variables()
sess.run(init)
print sess.run(b)

最佳答案

尝试tf.get_variable

import tensorflow as tf

def func(var1, cons):
var1, _ = tf.while_loop(cond, body, [var1, cons], return_same_structure=True)
with tf.control_dependencies([var1, _]):
return var1

def cond(var, cons):
return tf.reduce_all(tf.less(var,cons))

def body(var, cons):
var = tf.get_variable(name="m",initializer=[2.0])
var = tf.scatter_update(var, [0], tf.add(var, tf.constant([1.0])))
# var = tf.add(var, tf.constant([1.0]))
return (var, cons)

with tf.Session() as sess:
x = tf.constant([10.0])
m = tf.Variable([2.0],name='m')
b = func(m, x)
init = tf.initialize_all_variables()
sess.run(init)
print(sess.run(b))

[10.]

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

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