Как узнать, что блокирует мой объект? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть модель keras, и я пытаюсь использовать обратный вызов ModelCheckpoint, чтобы сохранить объект модели, а не только веса, после эпохи обучения.Примечание. Я отключил все параметры многопоточности в функции train_generator.

Когда код выполняет обратный вызов, я получаю сообщение об ошибке, связанной с блокируемым объектом.Я установил точку останова прямо перед функцией, которая генерирует ошибку для проверки объекта.Из консоли отладчика python я получаю похожую ошибку TypeError: can't pickle _thread.RLock objects, когда пытаюсь вручную выбрать объект из командной строки pdb.

Я также попытался с успехом использовать модуль inspect.

Я хотел бы знать, как я могу определить, что нацелено на этот объект.Затем планируется выяснить, как заставить эту функцию освободить блокировку объекта.

Обновление
Чуть больше, углубившись в код для train_generatorпохоже, проблема в том, что в структуре данных, представляющей мою модель, OrderedDict есть значение, представляющее собой неоцененный тип данных с постоянным тензорным потоком.Пара вещей.Во-первых, поскольку сеанс не сохраняется с моделью, я не могу оценить tf.constant.Во-вторых, это, кажется, артефакт тензорного потока, работающего в режиме отложенного вычисления.Может показаться, что группа обеспечения доступности баз данных, созданная в tenorflow, предотвращает оценку с помощью RLocksЭто то, что я до сих пор выводил.Таким образом, следующий шаг - запустить тензор потока в активном режиме и посмотреть, исчезнет ли проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...