2016-01-07 2 views
1

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

В частности,

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

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

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

Avisek

+0

вы хотите сказать, у вас есть _tens гигабайт RAM_ ?? – ForceBru

ответ

0

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

2

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

значения = lasagne.layers.get_all_param_values ​​(net1)

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

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

lasagne.layers.set_all_param_values ​​(net1, в ценности)