Обучите мелкую нейронную сеть
Эта функция обучает мелкую нейронную сеть. Для глубокого обучения для сверточных или нейронных сетей LSTM смотрите trainNetwork
вместо этого.
[
обучает сеть с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".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, чтобы остановить обучение любое время, затем загрузите ваш файл контрольной точки, чтобы получить сетевую и учебную запись.
net
— Сеть Inputnetwork
объектВведите сеть, заданную как network
объект. Создать network
объект, используйте, например, feedforwardnet
или narxnet
.
X
— Сетевые входные параметрыСетевые входные параметры, заданные как 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
игнорирует ту строку и использует другие строки в обучении, тестировании или валидации.
T
— Сетевые целиСетевые цели, заданные как 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
, тот столбец не используется в обучении, тестировании или валидации.
Xi
— Начальный вход задерживает условияНачальный вход задерживает условия, заданные как Ni
- ID
массив ячеек или R
- (ID*Q)
матрица, где
ID = net.numInputDelays
Ni = net.numInputs
R
входной размер
Q
пакетный размер
Для входа массива ячеек, столбцов Xi
упорядочены от самого старого условия задержки до нового: Xi{i,k}
вход i
во время ts = k - ID
.
Xi
является также дополнительным, и должны только использоваться в сетях, которые ввели или задержки слоя.
Ai
— Начальные условия задержки слояНачальные условия задержки слоя, заданные как 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
.
EW
— Ошибочные весаОшибочные веса, заданные как 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'
'useParallel'
— Опция, чтобы задать параллельные вычисления'no'
(значение по умолчанию) | 'yes'
Опция, чтобы задать параллельные вычисления, заданные как 'yes'
или 'no'
.
'no'
– Вычисления происходят на нормальном потоке MATLAB. Это - 'useParallel'
по умолчанию установка.
'yes'
– Вычисления происходят на параллельных рабочих, если параллельный пул открыт. В противном случае вычисления происходят на нормальном потоке MATLAB®.
'useGPU'
— Опция, чтобы задать вычисления графического процессора'no'
(значение по умолчанию) | 'yes'
| 'only'
Опция, чтобы задать вычисления графического процессора, заданные как 'yes'
, 'no'
, или 'only'
.
'no'
– Вычисления происходят на центральном процессоре. Это - 'useGPU'
по умолчанию установка.
'yes'
– Вычисления происходят на текущем gpuDevice
если это - поддерживаемый графический процессор (См. Parallel Computing Toolbox для требований графического процессора.), Если текущий gpuDevice
не поддержан, вычисления остаются на центральном процессоре. Если 'useParallel'
также 'yes'
и параллельный пул открыт, затем каждый рабочий с помощью уникального графического процессора использует тот графический процессор, другие рабочие выполняют вычисления на своих соответствующих ядрах процессора.
'only'
– Если никакой параллельный пул не открыт, то эта установка совпадает с 'yes'
. Если параллельный пул открыт затем, только рабочие с помощью уникальных графических процессоров используются. Однако, если параллельный пул открыт, но не поддержал графические процессоры, доступны, то вычисления возвращаются к выполнению на всех центральных процессорах рабочего.
'showResources'
— Опция, чтобы показать ресурсы'no'
(значение по умолчанию) | 'yes'
Опция, чтобы показать ресурсы, заданные как 'yes'
или 'no'
.
'no'
– Не отображайте вычислительные ресурсы, используемые в командной строке. Это - настройка по умолчанию.
'yes'
– Покажите в командной строке сводные данные вычислительных ресурсов, на самом деле используемых. Фактические ресурсы могут отличаться от требуемых ресурсов, если вычисление параллели или графического процессора требуют, но параллельный пул не открыт, или поддерживаемый графический процессор не доступен. Когда параллельные рабочие используются, режим расчета каждого рабочего описан, включая рабочих в пуле, которые не используются.
'reduction'
— Сокращение памятиСокращение памяти, заданное как положительное целое число.
Для большинства нейронных сетей режим расчета обучения центрального процессора по умолчанию является скомпилированным алгоритмом MEX. Однако для больших сетей вычисления могут произойти с режимом вычисления MATLAB. Это может быть подтверждено с помощью 'showResources'
. Если MATLAB используется, и память является проблемой, устанавливая опцию сокращения на значение N больше, чем 1, уменьшает большую часть временного хранения, требуемого обучаться фактором N, в обмен на более длительные учебные времена.
'CheckpointFile'
— Файл контрольной точки''
(значение по умолчанию) | вектор символовФайл контрольной точки, заданный как вектор символов.
Значение для 'CheckpointFile'
может собираться в имя файла сохранить в текущей рабочей папке, к пути к файлу в другой папке, или к пустой строке, чтобы отключить контрольную точку сохраняет (значение по умолчанию).
'CheckpointDelay'
— Отметьте задержку контрольной точкойОтметьте контрольной точкой задержку, заданную как неотрицательное целое число.
Дополнительный параметр 'CheckpointDelay'
происходят пределы, как часто сохраняет. Ограничение частоты контрольных точек может повысить эффективность путем поддержания контрольных точек сохранения количества времени на низком уровне по сравнению со временем потраченными в вычислениях. Это имеет значение по умолчанию 60, что означает, что контрольная точка сохраняет, не происходят несколько раз в минуту. Установите значение 'CheckpointDelay'
к 0, если вы хотите контрольную точку, сохраняет, чтобы произойти только один раз в эпоху.
trainedNet
— Обучивший сетьnetwork
объектОбучивший сеть, возвращенный как network
объект.
tr
— Учебная записьУчебная запись (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
, учебная функция, которая делает это.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.