Как сохранить объект нейросети Lasagne

Я пытаюсь тренировать CNN, используя лазанью и NoLearn. После того, как обучение закончено, я хочу сохранить параметры нейросети.

В частности,

nn = net1.fit(X_train, y_train) # train neural net

with open('nn.pickle', 'wb') as f:
    pickle.dump(nn2, f, -1)

Я не могу использовать pickle(), потому что размер объекта (nn) составляет несколько десятков ГБ. Как я могу хранить объекты такого размера на диске?

Avisek

2 ответа

Вместо сохранения всей сети с помощью pickle, вы можете сохранить только ее параметры, используя:

values ​​= lasagne.layers.get_all_param_values ​​(net1)

В официальном уроке по лазанью вы можете видеть, что get_all_param_values ​​возвращает список массивов-пустышек, представляющих значения параметров. Вы можете сохранить их, используя numpy.savez, способный хранить несколько массивов в одном файле в несжатом формате.npz. Вы также можете сжать их, используя numpy.savez_compressed.

Чтобы загрузить параметры в ваш CNN, сначала вы должны сгенерировать сетевую архитектуру (очевидно, она должна быть такой же, как вы ранее обучались), затем вы можете загрузить с диска параметры с помощью np.load и, наконец, назначить их сетевым вызовам.:

lasagne.layers.set_all_param_values ​​(net1, values)

Если вы хотите сохранить объект Python на диск, вам нужна сериализация. Когда вы хотите сериализации, вам нужно pickle или... это "брат" cPickle который иногда может быть в тысячи раз быстрее, чем pickle,

Другие вопросы по тегам