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 слой сеть feedforward. Сеть имеет один скрытый слой с десятью нейронами.

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-Q, затем каждый выходной элемент имеет различную важность со всеми выборками, с которыми относятся та же важность.

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

Задайте дополнительные разделенные запятой пары 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