Найти в Дзене
Властелин машин

Временная прописка для нейросети

Сложная нейронная сеть подобна ребенку, которого надо долго обучать, прежде чем позволить решать реальные задачи. Соответственно, из раза в раз требуется сохранять ее состояние на жестком диске.

Для сохранения весов модели (значений переменных во всех подмодулях) можно воспользоваться классом tf.train.Checkpoint. Например, сохраним TwoLayerModel (рассматривалась ранее) определенную ниже:

-2

В результате будут созданы два файла: один для сохранения весов и второй - индекса, который отслеживает фактические изменения в контрольных точках и ведет их нумерацию.

Посредством вызова tf.train.list_variables можно проверить, что состояние переменных действительно сохранилось :

-3

Для восстановления весов в новую модель используется метод restore класса tf.train.Checkpoint. При этом текущие веса модели будут заменены восстанавливаемыми.

Давайте создадим экземпляр TwoLayerModel. Посмотрим его выдачу на тестовом наборе и сохраним веса модели:

-4

Теперь создадим другой экземпляр TwoLayerModel, проверим его выдачу на том же наборе:

-5

Если восстановить состояние первой модели во вторую, то результат выдачи станет таким же, как и в первый раз (соответственно, веса переменных mod2 стали идентичны mod):

-6

Следует отметить, что tf.train.Checkpoint фиксирует точное значение всех параметров, используемых моделью. При этом не сохраняет графа вычислений, определенного моделью (в отличие от tf.saved_model). Поэтому tf.train.Checkpoint полезен, когда доступен исходный код нейросети, который будет использовать сохраненные значения параметров.

-7