Почему итерация по tf.Tensor не допускается в тензорном потоке?

Я использую @ tf.function для украшения функций для повышения скорости, но при попытке перебрать tf.range () выхожу с ошибкой. Эту ошибку можно воссоздать, используя следующий код

@tf.function
def loop(x, y):
    for i in tf.range(1,100,dtype=tf.int64):
        x.assign_add(y)
    return x

Моя версия тензорного потока - 1.15. Я не хочу заменять tf.range () диапазоном, так как, насколько мне известно, он развернет тело цикла. Есть ли способы решить эту проблему?

Информация об ОШИБКЕ ниже

OperatorNotAllowedInGraphError: iterating over `tf.Tensor` is not allowed: AutoGraph did not convert this function. Try decorating it directly with @tf.function

person Kang Lang    schedule 08.04.2021    source источник
comment
укажите ошибку ... почему бы не использовать tf 2?   -  person David Thery    schedule 08.04.2021
comment
Я загрузил информацию об ошибке. А адаптировать мой проект к tf2 очень громоздко ...   -  person Kang Lang    schedule 08.04.2021
comment
посмотрите на это - stackoverflow.com/questions/62068323/   -  person David Thery    schedule 08.04.2021
comment
Я согласен с тем, что переход на TF2 был бы наиболее разумным решением по многим причинам. Если это невозможно, единственный способ, о котором я знаю, выполнить цикл в TF 1.x, - это использовать сканировать или свернуть. К сожалению, мне не хватает времени, чтобы подготовить правильный ответ о том, как использовать эти функции. Они могут быть неудобными в использовании. В предыдущем комментарии также предлагается map_fn для аналогичного варианта использования.   -  person xdurch0    schedule 08.04.2021