Свойства и параметры нейронной сети как объекта MATLAB
При разработке 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
Комментарии