Сконфигурируйте входы и выходы неглубокой нейронной сети

Эта тема является частью рабочего процесса проекта, описанного в Рабочем процессе для Neural Network Design.

После создания нейронной сети ее необходимо сконфигурировать. Шаг строения состоит из исследования входных и целевых данных, установки входных и выходных размеров сети так, чтобы они совпадали с данными, и выбора настроек для обработки входных и выходных параметров, которые позволят повысить эффективность сети. Шаг строения обычно выполняется автоматически, когда вызывается функция обучения. Однако это можно сделать вручную, с помощью функции строения. Для примера, чтобы сконфигурировать сеть, которую вы создали ранее, чтобы аппроксимировать функцию синуса, выполните следующие команды:

p = -2:.1:2;
t = sin(pi*p/2);
net1 = configure(net,p,t);

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

После строения, если вы снова посмотрите на вес между слоем 1 и слоем 2, вы увидите, что размерность веса 1 на 20. Это связано с тем, что целью для этой сети является скаляр.

net1.layerWeights{2,1}

    Neural Network Weight

            delays: 0
           initFcn: (none)
        initConfig: .inputSize
             learn: true
          learnFcn: 'learngdm'
        learnParam: .lr, .mc
              size: [1 10]
         weightFcn: 'dotprod'
       weightParam: (none)
          userdata: (your custom info)

В дополнение к установке соответствующих размерностей для весов, шаг строения также определяет настройки для обработки входов и выходов. Вход может быть расположена в inputs подобъект:

net1.inputs{1}

    Neural Network Input

              name: 'Input'
    feedbackOutput: []
       processFcns: {'removeconstantrows', mapminmax}
     processParams: {1x2 cell array of 2 params}
   processSettings: {1x2 cell array of 2 settings}
    processedRange: [1x2 double]
     processedSize: 1
             range: [1x2 double]
              size: 1
          userdata: (your custom info)

Прежде чем вход будет применен к сети, он будет обработан двумя функциями: removeconstantrows и mapminmax. Они полностью обсуждаются в Multilayer Shallow Neural Networks and Backpropagation Training, поэтому мы не будем рассматривать детали здесь. Эти функции обработки могут иметь некоторые параметры обработки, которые содержатся в подобъекте net1.inputs{1}.processParam. Они имеют значения по умолчанию, которые можно переопределить. Функции обработки могут также иметь настройки строения, которые зависят от выборочных данных. Они содержатся в net1.inputs{1}.processSettings и устанавливаются в процессе строения. Для примера, mapminmax функция обработки нормирует данные так, чтобы все входы попадали в область значений [− 1, 1]. Настройки его строения включают минимальное и максимальное значения в выборочных данных, которые ему нужно выполнить для правильной нормализации. Это будет обсуждаться гораздо более подробно в Multilayer Shallow Neural Networks и Backpropagation Training.

Как общее правило, мы используем термин «параметр», как в параметрах процесса, параметрах обучения и т.д., чтобы обозначить константы, которые имеют значения по умолчанию, которые присваиваются программным обеспечением при создании сети (и которые можно переопределить). Мы используем термин «настройка конфигурации», как и в настройке строения процесса, чтобы обозначить константы, которые назначаются программным обеспечением из анализа выборочных данных. Эти настройки не имеют значений по умолчанию и обычно не должны быть переопределены.

Для получения дополнительной информации смотрите также Общие сведения о структурах сетевых данных мелкого заложения.