Обучите мелкую нейронную сеть
Эта функция обучает мелкую нейронную сеть. Для глубокого обучения для сверточных или нейронных сетей LSTM смотрите trainNetwork
вместо этого.
trainedNet = train(net,X,T,Xi,Ai,EW)
[trainedNet,tr] = train(net,X,T,Xi,Ai,EW)
[trainedNet,tr] = train(net,X,T,Xi,Ai,EW,Name,Value)
[
обучает сеть с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".trainedNet
,tr
] = train(net
,X
,T
,Xi
,Ai
,EW
,Name,Value
)
x
входа Here и цели, 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);
Примечание в примере выше функции конфигурирует, использовался, чтобы установить размерности и настройки обработки входных параметров сети. Это обычно происходит автоматически, когда train называется, но при обеспечении составным данным этот шаг должен быть выполнен вручную с несоставными данными.
Сети могут быть обучены с помощью текущего устройства графического процессора, если оно поддерживается 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);
Примечание в примере выше функции конфигурирует, использовался, чтобы установить размерности и настройки обработки входных параметров сети. Это обычно происходит автоматически, когда train называется, но при обеспечении 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
-by-Q
матрица или Ni
-by-TS
массив ячеек, где
R
является входным размером
Q
является пакетным размером
Ni = net.numInputs
TS
является количеством временных шагов
Аргументы train
могут иметь два формата: матрицы, для статических проблем и сетей с одним вводами и выводами и массивов ячеек в течение нескольких тактов и сетей с несколькими вводами и выводами.
Матричный формат может использоваться, если только один временной шаг должен быть моделирован (TS = 1
). Это удобно для сетей только с одним вводом и выводом, но может использоваться с сетями, которые имеют больше. Когда сеть имеет несколько входных параметров, матричный размер (сумма Ri
)-by-Q
.
Формат массива ячеек является более общим, и более удобным для сетей с несколькими вводами и выводами, позволяя последовательностям входных параметров быть представленным. Каждым элементом X{i,ts}
является Ri
-by-Q
матрица, где Ri = net.inputs{i}.size
.
Если Составные данные используются, то 'useParallel'
автоматически установлен в 'yes'
. Функция берет Составные данные и возвращает Составные результаты.
Если gpuArray данные используются, то 'useGPU'
автоматически установлен в 'yes'
. Функция берет gpuArray данные и возвращает результаты gpuArray
Любые значения NaN
во входных параметрах X
или цели T
, обработаны как недостающие данные. Если столбец X
или T
содержит по крайней мере один NaN
, тот столбец не используется для обучения, тестирования или валидации.
T
Сетевые целиСетевые цели, заданные как U
-by-Q
матрица или No
-by-TS
массив ячеек, где
U
является выходным размером
Q
является пакетным размером
No = net.numOutputs
TS
является количеством временных шагов
Аргументы train
могут иметь два формата: матрицы, для статических проблем и сетей с одним вводами и выводами и массивов ячеек в течение нескольких тактов и сетей с несколькими вводами и выводами.
Матричный формат может использоваться, если только один временной шаг должен быть моделирован (TS = 1
). Это удобно для сетей только с одним вводом и выводом, но может использоваться с сетями, которые имеют больше. Когда сеть имеет несколько входных параметров, матричный размер (сумма Ui
)-by-Q
.
Формат массива ячеек является более общим, и более удобным для сетей с несколькими вводами и выводами, позволяя последовательностям входных параметров быть представленным. Каждым элементом T{i,ts}
является Ui
-by-Q
матрица, где Ui = net.outputs{i}.size
.
Если Составные данные используются, то 'useParallel'
автоматически установлен в 'yes'
. Функция берет Составные данные и возвращает Составные результаты.
Если gpuArray данные используются, то 'useGPU'
автоматически установлен в 'yes'
. Функция берет gpuArray данные и возвращает результаты gpuArray
Обратите внимание на то, что T
является дополнительным, и должны только использоваться для сетей, которые требуют целей.
Любые значения NaN
во входных параметрах X
или цели T
, обработаны как недостающие данные. Если столбец X
или T
содержит по крайней мере один NaN
, тот столбец не используется для обучения, тестирования или валидации.
Xi
— Initial задерживает условияНачальный вход задерживает условия, заданные как Ni
-by-ID
массив ячеек или R
-by-(ID*Q)
матрица, где
ID = net.numInputDelays
Ni = net.numInputs
R
является входным размером
Q
является пакетным размером
Для входа массива ячеек столбцы Xi
упорядочены от самого старого условия задержки до нового: Xi{i,k}
является входом i
во время ts = k - ID
.
Xi
является также дополнительным, и должны только использоваться для сетей, которые ввели или задержки слоя.
Ai
— Initial задерживает условияНачальные условия задержки слоя, заданные как Nl
-by-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
-by-TS
массив ячеек или (сумма Ui
)-by-Q
матрица, где
No = net.numOutputs
TS
является количеством временных шагов
Ui = net.outputs{i}.size
Q
является пакетным размером
Для входа массива ячеек. каждым элементом EW{i,ts}
является Ui
-by-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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.