Внутри @tf.function шага: tape → loss → grads → optimizer.apply_gradients; снаружи — итерация по tf.data и метрики update_state.
Разбор
- Явно передавайте
training=True/False.
- Смешивайте с
tf.distribute.Strategy через strategy.run.
- Клиппинг:
tf.clip_by_global_norm.
- Логируйте mean loss по шагам.
Итог
Custom loop даёт контроль, который скрыт в fit.