Перейти к содержимому
Compvision.ru
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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

#сохранение сетки
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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×