Создание и обновление переменной с помощью tf.Variable() внутри tf.while_loop() в функции, вызываемой в tf.Graph()

#python #tensorflow #deep-learning #artificial-intelligence #tensorflow2.0

Вопрос:

Ниже приведен краткий демонстрационный фрагмент кода (пример) того, что я пытаюсь сделать в своем проекте, но я получаю ошибку (в операторе tf.Variable() внутри while_body — создание переменной) и не могу ее исправить, может ли кто-нибудь помочь мне с этим. Моя версия TF — 2.3.0

Демонстрационный код:

 import tensorflow as tf

def create_variable(a):
    variable = tf.Variable(tf.zeros([a, a]), tf.int32)
    return variable

def loop():   
    def cond(i, *args):
        return tf.less(i, 10)

    def body(i, a, b):
        var = create_variable(a)
        var[0, 0].assign(b)
        return (tf.add(i, 1), )

    i = tf.constant(0)
    a = tf.constant(5)
    b = tf.constant(10)
    r = tf.while_loop(cond, body, [i, a, b])
    return 

with tf.Graph().as_default() as graph:
    loop()
 

Ошибка:

 ValueError: Tensor-typed variable initializers must either be wrapped in an init_scope or callable (e.g., `tf.Variable(lambda : tf.truncated_normal([10, 40]))`) when building functions. Please file a feature request if this restriction inconveniences you.