Tensorflow-Keras: загрузка весов с контрольной точки значительно увеличивает размер графика - PullRequest
2 голосов
/ 28 февраля 2020

Я работаю с довольно большой сетью (98 миллионов параметров), я использую обратный вызов Keras ModelCheckPoint, чтобы сохранить мои веса следующим образом: когда я перезагружаю свои сохраненные веса с помощью keras, я вижу, что операция загрузки добавляет примерно 10 операций на слой в моем графике. Это приводит к огромному увеличению памяти моей общей сети. Это ожидаемое поведение? И если да, есть ли какие-нибудь известные обходные пути?

Детали: Я использую: tf.keras.callbacks.ModelCheckpoint с "save_weights_only=True" в качестве аргумента для сохранения весов

Код для загрузки:

model.load_weights(path_to_existing_weights)

где модель - это пользовательская модель keras.

Я использую Tensorflow 1.14 и Keras 2.3.0

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 07 марта 2020

Это кажется мне неожиданным поведением, но я не вижу ничего очевидного в том, что вы делаете неправильно. Вы уверены, что не было никаких изменений в вашей модели между временем, в течение которого вы сохраняли веса, и временем, когда вы перезагружали веса? Все, что я могу предложить, это попытаться сделать то же самое, но на этот раз в обратном вызове изменить его, чтобы сохранить всю модель. Затем перезагрузите модель, затем проверьте график. Я также столкнулся с этим, сомневаюсь, что это проблема, но я бы проверил это

Чтобы сохранить ваши модели Keras в виде файлов HDF5, например, через keras.callbacks.ModelCheckpoint, Keras использует h5py Python пакет. Это зависимость от Keras и должна быть установлена ​​по умолчанию. Если вы не уверены, установлен ли h5py, вы можете открыть оболочку Python и загрузить модуль через импорт. H5py. Если он импортируется без ошибок, он установлен, в противном случае вы можете найти подробные инструкции по установке здесь: http://docs.h5py.org/en/latest/build.html

Возможно, вы можете попробовать переустановить его.

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