train

Обучите мелкую нейронную сеть

Описание

Эта функция обучает мелкую нейронную сеть. Для глубокого обучения для сверточных или нейронных сетей LSTM смотрите trainNetwork вместо этого.

пример

trainedNet = train(net,X,T,Xi,Ai,EW) обучает сеть net согласно net.trainFcn и net.trainParam.

[trainedNet,tr] = train(net,X,T,Xi,Ai,EW) также возвращает учебную запись.

пример

[trainedNet,tr] = train(net,X,T,Xi,Ai,EW,Name,Value) обучает сеть с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".

Примеры

свернуть все

Вход Here x и цели t задайте простую функцию, которую можно построить:

x = [0 1 2 3 4 5 6 7 8];
t = [0 0.84 0.91 0.14 -0.77 -0.96 -0.28 0.66 0.99];
plot(x,t,'o')

Здесь feedforwardnet создает сеть прямого распространения 2D слоя. Сеть имеет один скрытый слой с десятью нейронами.

net = feedforwardnet(10);
net = configure(net,x,t);
y1 = net(x)
plot(x,t,'o',x,y1,'x')

Сеть обучена и затем повторно симулирована.

net = train(net,x,t);
y2 = net(x)
plot(x,t,'o',x,y1,'x',x,y2,'*')

Этот пример обучает разомкнутый контур нелинейно-авторегрессивная сеть с внешним входом, чтобы смоделировать поднимаемую магнитную систему, заданную управлением текущий x и ответ вертикального положения магнита t, затем симулирует сеть. Функция preparets готовит данные перед обучением и симуляцией. Это создает объединенные входные параметры сети разомкнутого контура xo, который содержит обоих внешний вход x и предыдущие значения положения t. Это также готовится, задержка утверждает xi.

[x,t] = maglev_dataset;
net = narxnet(10);
[xo,xi,~,to] = preparets(net,x,{},t);
net = train(net,xo,to,xi);
y = net(xo,xi)

Эта та же система может также быть симулирована в форме с обратной связью.

netc = closeloop(net);
view(netc)
[xc,xi,ai,tc] = preparets(netc,x,{},t);
yc = netc(xc,xi,ai);

Parallel Computing Toolbox™ позволяет Deep Learning Toolbox™ симулировать и обучать нейронные сети быстрее и на больших наборах данных, чем может соответствовать на одном PC. Параллельное обучение в настоящее время поддерживается для обучения обратной связи только, не для самоорганизующихся карт.

Здесь обучение и симуляция происходят через параллельных работников MATLAB.

parpool
[X,T] = vinyl_dataset;
net = feedforwardnet(10);
net = train(net,X,T,'useParallel','yes','showResources','yes');
Y = net(X);

Используйте Составные значения, чтобы распределить данные вручную и возвратить результаты как Составное значение. Если данные загружаются, когда они распределяются затем, в то время как каждая часть набора данных должна поместиться в RAM, набор данных в целом ограничивается только общим RAM всех рабочих.

[X,T] = vinyl_dataset;
Q = size(X,2);
Xc = Composite;
Tc = Composite;
numWorkers = numel(Xc);
ind = [0 ceil((1:numWorkers)*(Q/numWorkers))];
for i=1:numWorkers
    indi = (ind(i)+1):ind(i+1);
    Xc{i} = X(:,indi);
    Tc{i} = T(:,indi);
end
net = feedforwardnet;
net = configure(net,X,T);
net = train(net,Xc,Tc);
Yc = net(Xc);

Примечание в примере выше функции конфигурирует, использовался, чтобы установить размерности и настройки обработки входных параметров сети. Это обычно происходит автоматически, когда обучаются, называется, но при обеспечении составным данным этот шаг должен быть выполнен вручную с несоставными данными.

Сети могут быть обучены с помощью текущего устройства графического процессора, если оно поддерживается Parallel Computing Toolbox. Обучение графического процессора в настоящее время поддерживается для обучения обратной связи только, не для самоорганизующихся карт.

[X,T] = vinyl_dataset;
net = feedforwardnet(10);
net = train(net,X,T,'useGPU','yes');
y = net(X); 

Помещать данные по графическому процессору вручную:

[X,T] = vinyl_dataset;
Xgpu = gpuArray(X);
Tgpu = gpuArray(T);
net = configure(net,X,T);
net = train(net,Xgpu,Tgpu);
Ygpu = net(Xgpu);
Y = gather(Ygpu); 

Примечание в примере выше функции конфигурирует, использовался, чтобы установить размерности и настройки обработки входных параметров сети. Это обычно происходит автоматически, когда обучаются, называется, но при обеспечении gpuArray данным этот шаг должен быть выполнен вручную с non-gpuArray данными.

Запускаться параллельно, с рабочими каждый присвоенный различному уникальному графическому процессору, с дополнительными рабочими, работающими на центральном процессоре:

net = train(net,X,T,'useParallel','yes','useGPU','yes');
y = net(X);

Только Используя рабочих с помощью уникальных графических процессоров может привести к более высокой скорости, когда рабочие центрального процессора не могут поддержать на высоком уровне.

net = train(net,X,T,'useParallel','yes','useGPU','only');
Y = net(X);

Здесь сеть обучена с контрольными точками, сохраненными на уровне, не больше, чем один раз в две минуты.

[x,t] = vinyl_dataset;
net = fitnet([60 30]);
net = train(net,x,t,'CheckpointFile','MyCheckpoint','CheckpointDelay',120);

После компьютерного отказа последняя сеть может восстанавливаться и использоваться, чтобы продолжить обучение от точки отказа. Файл контрольной точки включает переменную checkpoint структуры, который включает сеть, учебную запись, имя файла, время и номер.

[x,t] = vinyl_dataset;
load MyCheckpoint
net = checkpoint.net;
net = train(net,x,t,'CheckpointFile','MyCheckpoint');

Другое использование для функции контрольной точки состоит в том, когда вы останавливаетесь, параллельный сеанс обучения (запустился с 'UseParallel' параметр) даже при том, что Инструмент Обучения Нейронной сети не доступен во время параллельного обучения. В этом случае установите 'CheckpointFile', используйте Ctrl+C, чтобы остановить обучение любое время, затем загрузите ваш файл контрольной точки, чтобы получить сетевую и учебную запись.

Входные параметры

свернуть все

Введите сеть в виде network объект. Создать network объект, используйте, например, feedforwardnet или narxnet.

Сетевые входные параметры в виде R- Q матрица или Ni- TS массив ячеек, где

  • R входной размер

  • Q пакетный размер

  • Ni = net.numInputs

  • TS количество временных шагов

train аргументы могут иметь два формата: матрицы, для статических проблем и сетей с одним вводами и выводами и массивов ячеек в течение нескольких тактов и сетей с несколькими вводами и выводами.

  • Матричный формат может использоваться, если только один временной шаг должен быть симулирован (TS = 1). Это удобно для сетей только с одним вводом и выводом, но может использоваться с сетями, которые имеют больше. Когда сеть имеет несколько входных параметров, матричный размер (сумма Ri)-by-Q.

  • Формат массива ячеек является более общим и другие удобный для сетей с несколькими вводами и выводами, позволяя последовательностям входных параметров быть представленным. Каждый элемент X{i,ts} Ri- Q матрица, где Ri = net.inputs{i}.size.

Если Составные данные используются, то 'useParallel' автоматически установлен в 'yes'. Функция берет Составные данные и возвращает Составные результаты.

Если gpuArray данные используются, то 'useGPU' автоматически установлен в 'yes'. Функция берет gpuArray данные и возвращает gpuArray результаты

Примечание

Если столбец X содержит по крайней мере один NaN, train не использует тот столбец для обучения, тестирования или валидации. Если целевое значение в T NaNто train игнорирует ту строку и использует другие строки для обучения, тестирования или валидации.

Сетевые цели в виде U- Q матрица или No- TS массив ячеек, где

  • U выходной размер

  • Q пакетный размер

  • No = net.numOutputs

  • TS количество временных шагов

train аргументы могут иметь два формата: матрицы, для статических проблем и сетей с одним вводами и выводами и массивов ячеек в течение нескольких тактов и сетей с несколькими вводами и выводами.

  • Матричный формат может использоваться, если только один временной шаг должен быть симулирован (TS = 1). Это удобно для сетей только с одним вводом и выводом, но может использоваться с сетями, которые имеют больше. Когда сеть имеет несколько входных параметров, матричный размер (сумма Ui)-by-Q.

  • Формат массива ячеек является более общим и другие удобный для сетей с несколькими вводами и выводами, позволяя последовательностям входных параметров быть представленным. Каждый элемент T{i,ts} Ui- Q матрица, где Ui = net.outputs{i}.size.

Если Составные данные используются, то 'useParallel' автоматически установлен в 'yes'. Функция берет Составные данные и возвращает Составные результаты.

Если gpuArray данные используются, то 'useGPU' автоматически установлен в 'yes'. Функция берет gpuArray данные и возвращает gpuArray результаты

Обратите внимание на то, что T является дополнительным, и должны только использоваться для сетей, которые требуют целей.

Примечание

Любой NaN значения во входных параметрах X или цели T, обработаны как недостающие данные. Если столбец X или T содержит по крайней мере один NaN, тот столбец не используется для обучения, тестирования или валидации.

Начальный вход задерживает условия в виде Ni- ID массив ячеек или R- (ID*Q) матрица, где

  • ID = net.numInputDelays

  • Ni = net.numInputs

  • R входной размер

  • Q пакетный размер

Для входа массива ячеек, столбцов Xi упорядочены от самого старого условия задержки до нового: Xi{i,k} вход i во время ts = k - ID.

Xi является также дополнительным, и должны только использоваться для сетей, которые ввели или задержки слоя.

Начальные условия задержки слоя в виде Nl- LD массив ячеек или (сумма Si) (LD*Q) матрица, где

  • Nl = net.numLayers

  • LD = net.numLayerDelays

  • Si = net.layers{i}.size

  • Q пакетный размер

Для входа массива ячеек, столбцов Ai упорядочены от самого старого условия задержки до нового: Ai{i,k} слой выход i во время ts = k - LD.

Веса ошибок в виде No- TS массив ячеек или (сумма Ui)-by-Q матрица, где

  • No = net.numOutputs

  • TS количество временных шагов

  • Ui = net.outputs{i}.size

  • Q пакетный размер

Для входа массива ячеек. каждый элемент EW{i,ts} Ui- Q матрица, где

  • Ui = net.outputs{i}.size

  • Q пакетный размер

Веса ошибок EW может также иметь размер 1 вместо всех или любого No, TS, Ui или Q. В этом случае, EW автоматически размерность, расширенная, чтобы совпадать с целями T. Это допускает удобное взвешивание важности в любой размерности (такой согласно выборке) при наличии равной важности через другого (такой как время, с TS=1). Если все размерности равняются 1, например, если EW = {1}, затем все целевые значения обработаны с той же важностью. Это - значение по умолчанию EW.

Как отмечено выше, веса ошибок EW может иметь те же размерности как цели T, или имейте некоторый набор размерностей к 1. Например, если EW 1 Q, затем целевые выборки будут иметь различный importances, но каждый элемент в выборке будет иметь ту же важность. Если EW (сумма Ui)-by-1, затем каждый выходной элемент имеет различную важность со всеми выборками, с которыми относятся та же важность.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'useParallel','yes'

Опция, чтобы задать параллельные вычисления в виде 'yes' или 'no'.

  • 'no' – Вычисления происходят на нормальном потоке MATLAB. Это - 'useParallel' по умолчанию установка.

  • 'yes' – Вычисления происходят на параллельных рабочих, если параллельный пул открыт. В противном случае вычисления происходят на нормальном потоке MATLAB®.

Опция, чтобы задать вычисления графического процессора в виде 'yes', 'no', или 'only'.

  • 'no' – Вычисления происходят на центральном процессоре. Это - 'useGPU' по умолчанию установка.

  • 'yes' – Вычисления происходят на текущем gpuDevice если это - поддерживаемый графический процессор (См. Parallel Computing Toolbox для требований графического процессора.), Если текущий gpuDevice не поддерживается, вычисления остаются на центральном процессоре. Если 'useParallel' также 'yes' и параллельный пул открыт, затем каждый рабочий с помощью уникального графического процессора использует тот графический процессор, другие рабочие выполняют вычисления на своих соответствующих ядрах процессора.

  • 'only' – Если никакой параллельный пул не открыт, то эта установка совпадает с 'yes'. Если параллельный пул открыт затем, только рабочие с помощью уникальных графических процессоров используются. Однако, если параллельный пул открыт, но не поддержал графические процессоры, доступны, то вычисления возвращаются к выполнению на всех центральных процессорах рабочего.

Опция, чтобы показать ресурсы в виде 'yes' или 'no'.

  • 'no' – Не отображайте вычислительные ресурсы, используемые в командной строке. Это - настройка по умолчанию.

  • 'yes' – Покажите в командной строке сводные данные вычислительных ресурсов, на самом деле используемых. Фактические ресурсы могут отличаться от требуемых ресурсов, если вычисление параллели или графического процессора требуют, но параллельный пул не открыт, или поддерживаемый графический процессор не доступен. Когда параллельные рабочие используются, режим расчета каждого рабочего описан, включая рабочих в пуле, которые не используются.

Сокращение памяти в виде положительного целого числа.

Для большинства нейронных сетей режим расчета обучения центрального процессора по умолчанию является скомпилированным алгоритмом MEX. Однако для больших сетей вычисления могут произойти с режимом вычисления MATLAB. Это может быть подтверждено с помощью 'showResources'. Если MATLAB используется, и память является проблемой, устанавливая опцию сокращения на значение N больше, чем 1, уменьшает большую часть временного хранения, требуемого обучаться на коэффициент N, в обмен на более длительные учебные времена.

Файл контрольной точки в виде вектора символов.

Значение для 'CheckpointFile' может собираться в имя файла сохранить в текущей рабочей папке, к пути к файлу в другой папке, или к пустой строке, чтобы отключить контрольную точку сохраняет (значение по умолчанию).

Отметьте задержку контрольной точкой в виде неотрицательного целого числа.

Дополнительный параметр 'CheckpointDelay' происходят пределы, как часто сохраняет. Ограничение частоты контрольных точек может повысить эффективность путем поддержания контрольных точек сохранения количества времени на низком уровне по сравнению со временем потраченными в вычислениях. Это имеет значение по умолчанию 60, что означает, что контрольная точка сохраняет, не происходят несколько раз в минуту. Установите значение 'CheckpointDelay' к 0, если вы хотите контрольную точку, сохраняет, чтобы произойти только один раз в эпоху.

Выходные аргументы

свернуть все

Обучивший сеть, возвращенный как network объект.

Учебная запись (epoch и perf), возвратился как структура, поля которой зависят от сетевой учебной функции (net.NET.trainFcn). Это может включать поля, такие как:

  • Обучение, деление данных, и функции эффективности и параметры

  • Индексы деления данных для обучения, валидации и наборов тестов

  • Маски деления данных для учебной валидации и наборов тестов

  • Номер эпох (num_epochs) и лучшая эпоха (best_epoch).

  • Список учебных имен состояния (states).

  • Поля для каждого имени состояния, записывающего его значение в течение обучения

  • Эффективность лучшей сети (best_perf, best_vperf, best_tperf)

Алгоритмы

train вызывает функцию, обозначенную net.trainFcn, использование учебных значений параметров обозначается net.trainParam.

Обычно одна эпоха обучения задана как одно представление всех входных векторов к сети. Сеть затем обновляется согласно результатам всех тех представлений.

Обучение происходит, пока максимальное количество эпох не происходит, цели эффективности удовлетворяют, или любое другое условие остановки функционального net.trainFcn происходит.

Некоторые учебные функции вылетают от этой нормы путем представления только одного входного вектора (или последовательность) каждая эпоха. Входной вектор (или последовательность) выбран случайным образом в течение каждой эпохи от параллельных входных векторов (или последовательности). competlayer возвращает сети то использование trainru, учебная функция, которая делает это.

Смотрите также

| | |

Представлено до R2006a