Создайте, сконфигурируйте и инициализируйте многоуровневые мелкие нейронные сети

Эта тема представляет часть типичного многоуровневого мелкого сетевого рабочего процесса. Для получения дополнительной информации и другие шаги, смотрите Многоуровневые Мелкие Нейронные сети и Обучение Обратной связи.

После того, как данные были собраны, следующий шаг в обучении сети должен создать сетевой объект. Функция feedforwardnet создает многоуровневую сеть прямого распространения. Если эта функция вызывается без входных параметров, то сетевой объект по умолчанию создается, который не был сконфигурирован. Получившаяся сеть может затем быть сконфигурирована с 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 команда автоматически сконфигурирует сеть и инициализирует веса.

Другие связанные архитектуры

В то время как 2-х слойные сети прямого распространения могут потенциально изучить фактически любое отношение ввода - вывода, сети прямого распространения с большим количеством слоев могут изучить комплексные отношения более быстро. Для большинства проблем, лучше запускаться с двух слоев, и затем увеличиваться до трех слоев, если эффективность с двумя слоями не является удовлетворительной.

Функция cascadeforwardnet создает прямые каскадом сети. Они похожи на сети прямого распространения, но включают связь веса от входа до каждого слоя, и от каждого слоя до последовательных слоев. Например, сеть с тремя слоями имеет связи от слоя 1 до слоя 2, слоя 2 к слою 3 и слою 1 к слою 3. Сеть с тремя слоями также имеет связи от входа до всех трех слоев. Дополнительные связи могут улучшить скорость, на которой сеть изучает желаемое отношение.

Функция patternnet создает сеть, которая очень похожа на feedforwardnet, за исключением того, что это использует tansig передаточная функция в последнем слое. Эта сеть обычно используется для распознавания образов. Другие сети могут учиться динамический или отношения timeseries.

Инициализация весов (init)

Перед обучением сеть прямого распространения необходимо инициализировать веса и смещения. configure команда автоматически инициализирует веса, но вы можете хотеть повторно инициализировать их. Вы делаете это с init команда. Эта функция берет сетевой объект в качестве входа и возвращает сетевой объект со всеми весами и смещает инициализированный. Вот то, как сеть инициализируется (или повторно инициализируется):

net = init(net);