Когда я передаю новую переменную внутреннему l oop через outter l oop, используя декоратор tf.function, и пытаюсь изменить его значение во внутреннем l oop, я должен передать свою переменную обратно через эти 2 цикла. Обычно это не было бы проблемой, но в моем случае, при использовании tf производительность сильно падает, только из-за обратной передачи измененной переменной. Это из-за повторного отслеживания? Есть ли другой способ изменить «глобальные» или переменные класса в tenorflow 2.0, так как init_scope ушел.
@tf.function
def Graph_Mapping(self,t1,t2,t3,t4,Image,Map,a,b,c,t):
Outter L oop
Количество от t3 до t4 ...
def condition_aussen(t3, t4):
return tf.less(t3, t4)
Фактически сосчитать и вызвать внутренний l oop
def body_aussen(t3,t4):
_,_, r, _,_,_ = tf.while_loop(condition_Innen, body_Innen, [t1, t2,Image,t3,t4,Map])
return [tf.add(t3, 1), t4]
Внутренний L oop
def condition_Innen(t1,t2,Image,t3,t4,Map):
return tf.less(t1, t2)
def body_Innen(t1,t2,Image,t3,t4,Map):
Do something .....
return [tf.add(t1, 1), t2,Image,t3,t4,Map]
Вызовите Outter L oop и сохраните его в «результате», чем верните результат
with tf.device('/device:GPU:0'):
result = tf.while_loop(condition_aussen, body_aussen, [t3, t4])
return result