• Регистрация
Редактор-сообщества-Экпонента
Редактор-сообщества-Экпонента+1.01
редактор
  • Написать
  • Подписаться

Свойства и параметры нейронной сети как объекта MATLAB

Глубокое обучение 
19.09.2019

При разработке Neural Network Toolbox использованы принципы объектно-ориентированного программирования. Основной объект – нейронная сеть. В этом разделе описаны основные свойства сети. Автор материала - Ю.П.Маслобоев.

Архитектура сети

Структура подобъектов

Функции

Параметры

Значения весов и смещений

Другие свойства

 

Наверх

Архитектура сети

Эти свойства определяют количество подобъектов сети (таких как слои, выходы, эталоны, смещения и веса), и каким образом они объединяются в сеть.

  • numInputs - определяет количество входов сети.

net.numInputs - может принимать значения 0 или положительное число.

Пояснение.

Количества входов сети и размерность входа разные вещи. Количество входов определяет, сколько групп векторов принимает сеть в качестве входов. Размерность каждого входа (т.е. количество элементов в каждом векторе) определяется размерностью входа (net.inputs{i}.size). Большинство сетей имеет один вход, размерность которого определяется поставленной задачей.

Сопутствующие эффекты.

Любое изменение этого свойства приводит к изменению размера матрицы, определяющей связи входов со слоями, (net.inputConnect) и размер массива ячеек входных подобъектов (net.inputs).

  • numLayers - определяет количество слоев сети.

net.numLayers - может принимать значения от 0 до любого положительного целого.

Сопутствующие эффекты.

Любое изменение этого свойства приводит к изменению размера каждой из булевых матриц, которые определяют связи между слоями: 

net.biasConnect

net.inputConnect

net.layerConnect

net.outputConnect

net.targetConnect

и изменяют размерности каждого из массивов ячеек структур подобъектов, чьи размеры зависят от количества слоев:

net.biases

net.inputWeights

net.layerWeights

net.outputs

net.targets

А также изменяет размеры каждого из настраиваемых параметров:

net.IW

net.LW

net.b

  • biasConnect - определяет, какие слои имеют смещения.

net.biasConnect - может принимать значения Булевой матрицы Nlx1, где Nl – количество слоев (net.numLayers). Наличие (или отсутствие) смещения у i-го слоя определяется 1 (или 0) в: net.biasConnect(i)

Сопутствующие эффекты.

Любое изменение этого свойства влияет на наличие или отсутствие структур в массиве ячеек смещений (net.biases) и, в наличии или отсутствии в массиве элементов векторов смещений (net.b).

  • inputConnect - определяет, какие слои обладают связями со входами.

net.inputConnect – определяет Булеву матрицу Nl x Ni, где Nl – количество слоев сети (net.numLayers), а Ni – количество входов сети (net.numInputs). Наличие (или отсутствие) связи i – го слоя с j – м слоем определяется 1 (или 0) в net.inputConnect(i,j).

Сопутствующие эффекты.

Любое изменение этого свойства влияет на наличие или отсутствие структур в массивах ячеек подобъектов входных весов (net.inputWeights) и на наличие или отсутствие матриц в массиве ячеек входных весов (net.IW).

  • layerConnect - определяет какие слои связаны с другими слоями.

net.layerConnect - определяет Булеву матрицу Nl x Nl , где Nl – количество слоев в сети (net.numLayers). Наличие (или отсутствие ) связи к I-го слоя с j-м слоем определяется 1 (или 0) в net.layerConnect(i,j).

Сопутствующие эффекты.

Любое изменение этого свойства влияет на наличие или отсутствие структур в массивах ячеек подобъектов весов слоев (net.layerWeights) и в наличии или отсутствии матриц в массиве ячеек весов слоев (net.LW).

  • outputConnect - определяет какие слои генерируют выходы сети.

net.outputConnect – задается в виде матрицы Булевых значений 1 x N , где N – количество слоев в сети (net.numLayers). Наличие (или отсутствие ) выхода от i-го слоя определяется 1 (или 0) в net.outputConnect(i).

Сопутствующие эффекты.

Любые изменения этого свойства будут влиять на количество выходов сети (net.numOutputs) и наличие или отсутствие структур в массиве ячеек выходных подобъектов (net.outputs).

  • targetConnect - определяет какие слои связаны с эталонами.

net.targetConnect - задается в виде матрицы Булевых значений 1 x N , где N – количество слоев в сети (net.numLayers). Наличие (или отсутствие ) эталонного значения, связанного с i- м слоем определяется 1 (или 0) в net.targetConnect(i).

Сопутствующие эффекты.

Любые изменения этого свойства будут изменять количество эталонных значений сети (net.numTargets) и наличие или отсутствие структур в массиве ячеек эталонных подобъектов (net.targets).

  • numOutputs (только для чтения) - указывает сколько выходов имеет сеть.

net.numOutputs - возвращает значение, соответствующее количеству единиц в матрице выходных соединений: numOutputs=sum(net.outputConnect).

  • numTargets (только для чтения) - указывает сколько эталонных значений имеет сеть.

net.numTargets - возвращает значение, соответствующее количеству единиц в матрице соединений с эталонами: numTargets=sum(net.targetConnect).

  • numInputDelays (только для чтения) - указывает какое количество временных шагов последних входов должно быть реализовано для того, чтобы смоделировать сеть.

net.numInputDelays - возвращает значение величины максимальной задержки, связанной с входными весами сети:

numInputDelays = 0;

for i=1:net.numLayers

for j=1:net.numInputs

if net.inputConnect(i,j)

numInputDelays = max( ...

[numInputDelays net.inputWeights{i,j}.delays]);

end

end

end

  • numLayerDelays (только для чтения) - указывает какое количество временных шагов последних выходов должно быть реализовано для того, чтобы смоделировать сеть.

net.numLayerDelays - возвращает значение величины максимальной задержки, связанной с весами слоев сети:

numLayerDelays = 0;

for i=1:net.numLayers

for j=1:net.numLayers

if net.layerConnect(i,j)

numLayerDelays = max( ...

[numLayerDelays net.layerWeights{i,j}.delays]);

end

end

end

 

Наверх

Структура подобъектов

Эти свойства определяют массивы ячеек структур, которые определяют каждый из входов сети, слои, выходы, эталоны, смещения и веса.

  • inputs - содержит структуры свойств для каждого из входов сети.

net.inputs - матрица Ni x1 ячеек входных структур, где Ni- число входов сети (net.numInputs).

Структура, определяющая свойства i-го сетевого входа, определена в: net.inputs{i}

  • layers - содержит структуры свойств для каждого из слоев сети.

net.layers - массив Ni x1 ячеек входных структур, где Ni- число слоев сети (net.numLayers).

Структура, определяющая свойства i-го слоя определена в: net.layers{i}.

  • outputs - содержит структуры свойств для каждого из выходов сети.

net.outputs - массив 1xNi ячеек входных структур, где Ni- число слоев сети (net.numLayers).

Структура, определяющая свойства i-го выхода, определена в: net.outputs{i}

если соответствующее выходное соединение net.outputConnect(i)- 1 (или 0):.

  • targets - содержит структуры свойств для каждого из эталонов сети.

net.targets – массив 1xNi ячеек входных структур, где Ni- число слоев сети (net.numLayers).

Структура, определяющая свойства эталона связанного с i-ым слоем (или нулевая матрица) определена в: net.targets{i} если соответствующее выходное соединение net.targetConnect(i) - 1 (или 0).

  • biases - содержит структуры свойств для каждого из смещений сети.

net.biases - массив Nix1 ячеек, где Ni- число слоев сети (net.numLayers).

Структура, определяющая свойства смещений i-го слоя (или нулевая матрица) расположена в: net.biases{i} если соответствующее соединение для смещения net.biasConnect(i) - 1 (или 0).

  • inputWeights – содержит структуры свойств для каждого из входных весов.

net.inputWeights - массив NlxNi ячеек, где Nl- число слоев сети (net.numLayers), а Ni - число входов сети (net.numInputs).

Структура, определяющая свойства весов к i-му слоя от j го слоя (или нулевая матрица) определена в: net.inputWeights{i,j}, если соответствующее соединение входа net.inputConnect(i,j) - 1 (или 0).

  • layerWeights - содержит структуры свойств для каждого из весов слоя сети.

net.layerWeights - массив NlxNl ячеек, где Nl- число слоев сети (net.numLayers).

Структура, определяющая свойства связей i-го слоя с j м слоем (или нулевая матрица) определена в: net.layerWeights{i,j}, если соответствующая связь слоя net.layerConnect(i,j) - 1 (или 0).

 

Наверх

Функции

Эти свойства определяют алгоритмы, которые используются при адаптации, инициализации, тренировке и оценке ее функционирования.

  • adaptFcn - определяет функцию, которая будет использована для адаптации сети.

net.adaptFcn - задается в виде названия функции адаптации сети из настоящего тулбокса:

trains – функция адаптации весов и смещений.

Функция адаптации сети используется, чтобы выполнить адаптацию всякий раз, когда вызывается adapt:

[net,Y,E,Pf,Af] = adapt(NET,P,T,Pi,Ai)

Сопутствующие эффекты.

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

  • initFcn - определяет функцию, используемую для инициализации матриц весов и векторов смещений сети.

net.initFcn - задается в виде названия функции инициализации сети из настоящего тулбокса:

initlay - функция инициализации весов и смещений.

Функция инициализации сети используется, чтобы выполнить инициализацию всякий раз, когда вызывается init:

net = init(net)

Сопутствующие эффекты.

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

  • performFcn – определяет функцию, используемую для оценки функционирования сети.

net.performFcn - задается в виде названия функции функционирования сети из настоящего тулбокса:

Функции функционирования
mae Средняя абсолютная ошибка
mse Средняя квадратичная ошибка
msereg Средняя квадратичная ошибка w/reg
sse Суммарная квадратичная ошибка

Функция функционирования сети используется, чтобы вычислить оценку функционирования сети всякий раз, когда вызывается train:

[net,tr] = train(NET,P,T,Pi,Ai)

Сопутствующие эффекты.

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

  • trainFcn - определяет функцию, используемую для тренировки сети.

net.trainFcn - задается в виде названия функции тренировки сети из настоящего тулбокса:

Функции тренировки
trainb Пакетная тренировка с использованием правил обучения для весов и смещений
trainbfg Тренировка сети с использованием квази –Ньютоновского метода BFGS
trainbr Регуляризация Bayesian
trainc Использование приращений циклического порядка
traincgb Метод связанных градиентов Пауэлла-Била (Powell-Beale)
traincgf Метод связанных градиентов Флетчера-Пауэлла (Fletcher-Powell)
traincgp Метод связанных градиентов Полака-Рибира (Polak-Ribiere)
traingd Метод градиентного спуска
traingda Метод градиентного спуска с адаптивным обучением
traingdm Метод градиентного спуска с учетом моментов
traingdx Метод градиентного спуска с учетом моментов и с адаптивным обучением
trainlm Метод Левенберга-Маркара (Levenberg-Marquardt)
trainoss Одноступенчатый метод секущих
trainr Метод случайных приращений
trainrp Алгоритм упругого обратного распространения
trains Метод последовательных приращений

Функция используется, чтобы тренировать сеть всякий раз, когда вызывается train:

[net,tr] = train(NET,P,T,Pi,Ai)

Сопутствующие эффекты.

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

 

Наверх

Параметры

  •   adaptParam - определяет параметры и значения текущей функции адаптации.

net.adaptParam - поля этого свойства зависят от текущей функции адаптации (net.adaptFcn). Вызовите вышеупомянутую ссылку, чтобы увидеть поля текущей функции адаптации.

Вызовите help на текущую функцию адаптации, чтобы получить описание каждого из полей: help(net.adaptFcn).

  • initParam - определяет параметры и значения текущей функции инициализации.

net.initParam - поля этого свойства зависят от текущей функции инициализации (net.initFcn). Вызовите вышеупомянутую ссылку, чтобы увидеть поля текущей функции адаптации.

Вызовите help на текущую функцию инициализации, чтобы получить описание каждого из полей: help(net.initFcn)

  • performParam - определяет параметры и значения текущей функции функционирования.

net.performParam - поля этого свойства зависят от текущей функции функционирования (net.performFcn). Вызовите вышеупомянутую ссылку, чтобы увидеть поля текущей функции функционирования.

Вызовите help на текущую функцию функционирования, чтобы получить описание каждого из полей: help(net.performFcn)

  • trainParam - определяет параметры и значения текущей функции тренировки.

net.trainParam - поля этого свойства зависят от текущей функции тренировки (net.trainFcn). Вызовите вышеупомянутую ссылку, чтобы увидеть поля текущей функции функционирования.

Вызовите help на текущую функцию тренировки, чтобы получить описание каждого из полей: help(net.trainFcn)

 

Наверх

Значения весов и смещений

Эти свойства определяют модифицируемые параметры сети: матрицы весов и векторы смещений.

  • IW - определяет матрицы входных весов.

net.IW – массив NlxNi ячеек, где Nl- число слоев в сети (net.numLayers), а Ni- число входов сети (net.numInputs).

Матрица весов для связи i го слоя с j м входом (или нулевая матрица []) описывается в: net.IW{i,j}, если соответствующее входное соединение. net.inputConnect(i,j)- 1 (или 0).

Матрица весов имеет количество строк, равное размеру слоя, к которому она относится (net.layers{i}.size). Содержит количество столбцов равное произведению размерности входа на количество задержек, ассоциированных с весом:

net.inputs{j}.size * length(net.inputWeights{i,j}.delays)

Эти размеры могут также быть получены из свойств входных весов:

net.inputWeights{i,j}.size

  • LW - определяет матрицы весов связей мехду слоями.

net.LW - массив Nl xNl ячеек, где Nl- число слоев в сети (net.numLayers).

Матрица весов для связи i го слоя. с j м слоем (или нулевая матрица []) представлена в: net.LW{i,j}, если соответствующее соединение слоя net.layerConnect(i,j) - 1 (или 0).

Матрица весов имеет количество строк, равное размеру слоя, к которому она относится (net.layers{i}.size). Содержит количество столбцов равное произведению размерности слоя на количество задержек, ассоциированных с весом:

net.layers{j}.size * length(net.layerWeights{i,j}.delays)

Эти размеры могут также быть получены из свойств веса слоя:

net.layerWeights{i,j}.size

  • b - определяет векторы смещений для каждого слоя со смещением.

net.b - массив Nl x1 ячеек, где Nl- число слоев в сети (net.numLayers).

Вектор смещения для i-го слоя (или нулевая(пустая) матрица []) определен в net.b{i} если соответствующее соединение смещения net.biasConnect(i)- 1 (или 0).

Число элементов в векторе смещения всегда равно размеру слоя, с которым он связан (net.layers{i}.size). Этот размер может также быть получен из свойств смещения: net.biases{i}.size.

 

Наверх

Другие свойства

Единственное другое свойство - свойство для данных пользователя.

  • userdata - Это свойство обеспечивает место для пользователей, чтобы добавить пользовательскую информацию о сети.

net.userdata

Только одно поле предопределено. Оно содержит секретное сообщение всем пользователям Neural Network Toolbox:

net.userdata.note

Теги

  • нейронные сети
    19.09.2019

    Комментарии