Как правильно отлаживать обратный вызов в TensoFlow с pdb в режиме активного выполнения? Следующий сценарий показывает ошибку. Обратный вызов - это функция metri c этой формы:
def my_custom_metric_in_top_k(k):
def metric_in_top_k(labels,predictions,features):
import pdb
pdb.set_trace()
...
return metric_in_top_k
Находясь внутри консоли pdb, я создаю сеанс с sess=tf.compat.v1.InteractiveSession()
, затем я могу получить значения тензора метки через labels.eval()
. Однако, когда я запускаю predictions.eval()
, я получаю следующую ошибку:
*** tensorflow. python .framework.errors_impl.FailedPreconditionError: Ошибка при чтении переменной ресурса group_score / density_2 / bias из контейнера: localhost. Это могло означать, что переменная не инициализирована. Не найдено: ресурс localhost / group_score / batch_normalization_2 / gamma / N10tensorflow3VarE не существует.
Что вызывает ошибку и как заставить predictions.eval()
работать? Кроме того, какие-либо советы по отладке обратных вызовов в Tensorflow?
Изменить: я подозреваю, что проблема в том, что существует два разных сеанса: интерактивный и сеанс, который использовался для чтения модели. Однако я читал модели, предоставляя каталог с контрольными точками обучения при создании экземпляра Estimator и вызывая evaluate
в оценщике. Мне кажется, что сессия была создана где-то внутри оценщика.