Эта тема представляет часть типичного многоуровневого мелкого сетевого рабочего процесса. Для получения дополнительной информации и другие шаги, смотрите Многоуровневые Мелкие Нейронные сети и Обучение Обратной связи.
После того, как данные были собраны, следующий шаг в обучении сети должен создать сетевой объект. Функциональный feedforwardnet
создает многоуровневую feedforward сеть. Если эта функция вызывается без входных параметров, то сетевой объект по умолчанию создается, который не был сконфигурирован. Получившаяся сеть может затем быть сконфигурирована с командой configure
.
Как пример, файл bodyfat_dataset.mat
содержит предопределенный набор входа и целевых векторов. Входные векторы задают данные относительно физических атрибутов людей, и целевые значения задают жировую прослойку процента людей. Загрузите данные с помощью следующей команды:
load bodyfat_dataset
Загрузка этого файла создает две переменные. Входная матрица bodyfatInputs
состоит из 252 вектор-столбцов 13 физических переменных атрибута для 252 различных людей. Целевой матричный bodyfatTargets
состоит из соответствующих 252 содержаний жира в организме.
Следующий шаг должен создать сеть. Следующий вызов feedforwardnet
создает сеть 2D слоя с 10 нейронами в скрытом слое. (Во время шага настройки номер нейронов в выходном слое определяется одному, который является числом элементов в каждом векторе целей.)
net = feedforwardnet; net = configure(net, bodyfatInputs, bodyfatTargets);
Дополнительные аргументы могут быть предоставлены feedforwardnet
. Например, первый аргумент является массивом, содержащим количество нейронов в каждом скрытом слое. (Настройка по умолчанию равняется 10, что означает один скрытый слой с 10 нейронами. Один скрытый слой обычно приводит к превосходным результатам, но можно хотеть попробовать два скрытых слоя, если результаты с каждый не соответствует. Увеличение числа нейронов в скрытом слое увеличивает степень сети, но требует большего количества вычисления и, более вероятно, произведет сверхподбор кривой.) Второй аргумент содержит имя учебной функции, которая будет использоваться. Если никакие аргументы не предоставляются, количество по умолчанию слоев равняется 2, количество по умолчанию нейронов в скрытом слое равняется 10, и учебной функцией по умолчанию является trainlm
. Передаточной функцией по умолчанию для скрытых слоев является tansig
, и значением по умолчанию для выходного слоя является purelin
.
Команда configure
конфигурирует сетевой объект и также инициализирует веса и смещения сети; поэтому сеть готова к обучению. Существуют времена, когда вы можете хотеть повторно инициализировать веса или выполнить пользовательскую инициализацию. Инициализация Весов (init) объясняет детали процесса инициализации. Можно также пропустить шаг настройки и перейти непосредственно к обучению сети. Команда train
автоматически сконфигурирует сеть и инициализирует веса.
В то время как 2D слой feedforward сети может потенциально узнать фактически, что любое отношение ввода - вывода, feedforward сети с большим количеством слоев может изучить комплексные отношения более быстро. Для большинства проблем, лучше запускаться с двух слоев, и затем увеличиваться до трех слоев, если производительность с двумя слоями не является удовлетворительной.
Функциональный cascadeforwardnet
создает прямые каскадом сети. Они подобны feedforward сетям, но включают связь веса от входа до каждого слоя, и от каждого слоя до последовательных слоев. Например, сеть с тремя слоями имеет связи от слоя 1 до слоя 2, слоя 2 к слою 3 и слою 1 к слою 3. Сеть с тремя слоями также имеет связи от входа до всех трех слоев. Дополнительные связи могут улучшить скорость, на которой сеть изучает желаемое отношение.
Функциональный patternnet
создает сеть, которая очень похожа на feedforwardnet
, за исключением того, что это использует передаточную функцию tansig
в последнем слое. Эта сеть обычно используется для распознавания образов. Другие сети могут учиться динамический или отношения timeseries.
Прежде, чем обучить feedforward сеть, необходимо инициализировать веса и смещения. Команда configure
автоматически инициализирует веса, но вы можете хотеть повторно инициализировать их. Вы делаете это с командой init
. Эта функция берет сетевой объект в качестве входа и возвращает сетевой объект со всеми весами и смещает инициализированный. Вот то, как сеть инициализируется (или повторно инициализируется):
net = init(net);