Я пытаюсь реализовать метод Галлея для решения квартичных уравнений в тензорном потоке, используя while_loop и переменные. По сути, мне нужно выполнить итерации несколько раз, но когда я использую эти переменные в тензорном потоке, он выглядит так, как будто ему присвоено значение переменной, больше не является переменной и теперь превращается в тензор. Как я могу изменить это так, чтобы переменная могла быть повторена внутри while_loop, принимая разные значения ?. спасибо за вашу помощь
import tensorflow as tf
tol = tf.constant(0.001, dtype = tf.float32)
x = tf.constant(0.1, dtype = tf.float32)
Coef = tf.constant([1, 1, -1, 7, 2], dtype = tf.float32)
x_nueva = tf.Variable(0.0, name = 'x_nueva')
error = tf.Variable(1.0, name = 'error' )
init_op = tf.global_variables_initializer()
def halley(tol, x, Coef, error, x_nueva):
a0 = Coef[0]
a1 = Coef[1]
a2 = Coef[2]
a3 = Coef[3]
a4 = Coef[4]
x_nueva.assign(x + a0)
error.assign(tf.abs(x-x_nueva))
return error, x_nueva
def condicion(tol, x, Coef, error, x_nueva):
return tf.less(tol, error)
with tf.Session() as sess:
sess.run(init_op)
resultado = tf.while_loop(condicion, halley, [tol, x, Coef, error, x_nueva])
print(resultado[4].eval())
отображение tenorflow следующая ошибка, связанная с переменной "x_nueva":
У объекта 'Tensor' нет атрибута 'assign'
я догадываюсьпосле «tf.assing» «x_nueva» превращается в тензор, а не в переменную, но я не могу найти, как это исправить.