Эта тема представляет часть типичного многоуровневого мелкого сетевого рабочего процесса. Для получения дополнительной информации и другие шаги, смотрите Многоуровневые Мелкие Нейронные сети и Обучение Обратной связи.
После того, как данные были собраны, следующий шаг в обучении сети должен создать сетевой объект. Функциональный 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);