ProgRoman 9 Report post Posted April 7, 2016 Обучил сеть используя библиотеки 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('имя файла') ну и продолжить работать уже как с обученной сетью, ещё интересует вопрос дообучения сети может кто-то пробовал работать с этими библиотеками я не нашёл как это можно сделать.. а всё время обучать сеть заново это как-то совсем печально) 1 Share this post Link to post Share on other sites
mrgloom 242 Report post Posted April 7, 2016 Не пробовал, но вот что выдаёт гугл https://gist.github.com/senbon/70adf5410950c0dc882b 1 Share this post Link to post Share on other sites
ProgRoman 9 Report post Posted April 13, 2016 привожу проверенный код для сохранения и считывания сетки #сохранение сетки 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 1 Share this post Link to post Share on other sites