Jump to content
Compvision.ru
Sign in to follow this  
ProgRoman

nolearn и lasagne сохранение модели

Recommended Posts

Обучил сеть используя библиотеки nolearn и lasagne привожу код

import os
import matplotlib.pyplot as plt
%pylab inline
import numpy as np
import lasagne
from lasagne import layers
from lasagne.updates import nesterov_momentum
from lasagne.layers import DenseLayer
from lasagne.layers import InputLayer
from lasagne.layers import DropoutLayer
from lasagne.layers import Conv2DLayer
from lasagne.layers import MaxPool2DLayer
from lasagne.nonlinearities import softmax
from lasagne.updates import adam
from lasagne.layers import get_all_params

from nolearn.lasagne import NeuralNet
from nolearn.lasagne import TrainSplit
from nolearn.lasagne import objective
from nolearn.lasagne import visualize

from sklearn.metrics import confusion_matrix, classification_report, accuracy_score

net_cnn = NeuralNet(
layers=[
('input', layers.InputLayer),
('conv1', layers.Conv2DLayer), #Convolutional layer. Params defined below
('pool1', layers.MaxPool2DLayer), # Like downsampling, for execution speed
('conv2', layers.Conv2DLayer),
('hidden3', layers.DenseLayer),
('output', layers.DenseLayer),
],

input_shape=(None, 1, 28, 28),
conv1_num_filters=7,
conv1_filter_size=(3, 3),
conv1_nonlinearity=lasagne.nonlinearities.rectify,

pool1_pool_size=(2, 2),

conv2_num_filters=12,
conv2_filter_size=(2, 2),
conv2_nonlinearity=lasagne.nonlinearities.rectify,

hidden3_num_units=1000,
output_num_units=10,
output_nonlinearity=lasagne.nonlinearities.softmax,

update_learning_rate=0.0001,
update_momentum=0.9,

max_epochs=10,
verbose=1,
)

net_cnn.fit(train,target)

как можно сохранить net_cnn в какой-нибудь файлик, что бы потом можно было бы загрузить  как-нибудь

net_new = load_net('имя файла')

ну и продолжить работать уже как с обученной сетью, ещё интересует вопрос дообучения сети может кто-то пробовал работать с этими библиотеками я не нашёл как это можно сделать.. а всё время обучать сеть заново это как-то совсем печально)

  • Like 1

Share this post


Link to post
Share on other sites

привожу проверенный код для сохранения и считывания сетки

#сохранение сетки
import cPickle as pickle


with open('net1.pickle', 'wb') as f:
    pickle.dump(net, f, -1)

net это обученная сеть

#загрузка обученной сетки из файла
import cPickle as pickle

with open('net1.pickle', 'rb') as f:
    net_pretrain = pickle.load(f)

net_pretrain новая сеть загруженная из файла, теперь её можно дообучать довольно удобно

дообучение сетки происходит так же как и просто обучение

net_pretrain.fit(X,y)

причём можно установить другое количество эпох (к примеру сеть net обучалась 10-ть эпох,  для до обучения можно поставить как меньше так и больше ну или оставить столько же))

net_pretrain.max_epochs = 30

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×