exponenta event banner

setL2Factor

Набор фактор регуляризации L2 слоя learnable параметр

Описание

пример

layer = setL2Factor(layer,parameterName,factor) устанавливает коэффициент регуляризации L2 параметра с именем parameterName в layer кому factor.

Для встроенных слоев можно задать коэффициент регуляризации L2 непосредственно с помощью соответствующего свойства. Например, для convolution2dLayer слой, синтаксис layer = setL2Factor(layer,'Weights',factor) эквивалентно layer.WeightL2Factor = factor.

layerUpdated = setL2Factor(layer,parameterPath,factor) устанавливает коэффициент регуляризации L2 параметра, заданного трактом parameterPath. Используйте этот синтаксис, когда параметр находится в dlnetwork объект в пользовательском слое.

dlnetUpdated = setL2Factor(dlnet,layerName,parameterName,factor) устанавливает коэффициент регуляризации L2 параметра с именем parameterName в слое с именем layerName для указанного dlnetwork объект.

dlnetUpdated = setL2Factor(dlnet,parameterPath,factor) устанавливает коэффициент регуляризации L2 параметра, заданного трактом parameterPath. Этот синтаксис используется, когда параметр находится во вложенном слое.

Примеры

свернуть все

Установка и получение коэффициента L2 регуляризации обучаемого параметра слоя.

Определите пользовательский слой PReLU. Чтобы создать этот слой, сохраните файл preluLayer.m в текущей папке.

Создание массива слоев, включающего пользовательский слой preluLayer.

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    batchNormalizationLayer
    preluLayer(20,'prelu')
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

Установка коэффициента регуляризации L2 для 'Alpha' обучаемый параметр preluLayer на 2.

layers(4) = setL2Factor(layers(4),'Alpha',2);

Просмотрите обновленный коэффициент регуляризации L2.

factor = getL2Factor(layers(4),'Alpha')
factor = 2

Установка и получение коэффициента L2 регуляризации обучаемого параметра вложенного слоя.

Создание остаточного слоя блока с использованием пользовательского слоя residualBlockLayer прилагается к этому примеру как вспомогательный файл. Чтобы получить доступ к этому файлу, откройте этот пример как живой сценарий.

numFilters = 64;
layer = residualBlockLayer(numFilters)
layer = 
  residualBlockLayer with properties:

       Name: ''

   Learnable Parameters
    Network: [1x1 dlnetwork]

  Show all properties

Просмотр слоев вложенной сети.

layer.Network.Layers
ans = 
  7x1 Layer array with layers:

     1   'conv1'   Convolution           64 3x3 convolutions with stride [1  1] and padding 'same'
     2   'gn1'     Group Normalization   Group normalization
     3   'relu1'   ReLU                  ReLU
     4   'conv2'   Convolution           64 3x3 convolutions with stride [1  1] and padding 'same'
     5   'gn2'     Group Normalization   Group normalization
     6   'add'     Addition              Element-wise addition of 2 inputs
     7   'relu2'   ReLU                  ReLU

Установка коэффициента регуляризации L2 обучаемого параметра 'Weights' слоя 'conv1' на 2 с использованием setL2Factor функция.

factor = 2;
layer = setL2Factor(layer,'Network/conv1/Weights',factor);

Получите обновленный коэффициент регуляризации L2 с помощью getL2Factor функция.

factor = getL2Factor(layer,'Network/conv1/Weights')
factor = 2

Установка и получение коэффициента L2 регуляризации обучаемого параметра dlnetwork объект.

Создать dlnetwork объект.

layers = [
    imageInputLayer([28 28 1],'Normalization','none','Name','in')
    convolution2dLayer(5,20,'Name','conv')
    batchNormalizationLayer('Name','bn')
    reluLayer('Name','relu')
    fullyConnectedLayer(10,'Name','fc')
    softmaxLayer('Name','sm')];

lgraph = layerGraph(layers);

dlnet = dlnetwork(lgraph);

Установка коэффициента L2 регуляризации 'Weights' распознаваемый параметр слоя свертки на 2 с помощью setL2Factor функция.

factor = 2;
dlnet = setL2Factor(dlnet,'conv','Weights',factor);

Получите обновленный коэффициент регуляризации L2 с помощью getL2Factor функция.

factor = getL2Factor(dlnet,'conv','Weights')
factor = 2

Установка и получение коэффициента L2 регуляризации обучаемого параметра вложенного слоя в dlnetwork объект.

Создать dlnetwork объект, содержащий пользовательский слой residualBlockLayer прилагается к этому примеру как вспомогательный файл. Чтобы получить доступ к этому файлу, откройте этот пример как живой сценарий.

inputSize = [224 224 3];
numFilters = 32;
numClasses = 5;

layers = [
    imageInputLayer(inputSize,'Normalization','none','Name','in')
    convolution2dLayer(7,numFilters,'Stride',2,'Padding','same','Name','conv')
    groupNormalizationLayer('all-channels','Name','gn')
    reluLayer('Name','relu')
    maxPooling2dLayer(3,'Stride',2,'Name','max')
    residualBlockLayer(numFilters,'Name','res1')
    residualBlockLayer(numFilters,'Name','res2')
    residualBlockLayer(2*numFilters,'Stride',2,'IncludeSkipConvolution',true,'Name','res3')
    residualBlockLayer(2*numFilters,'Name','res4')
    residualBlockLayer(4*numFilters,'Stride',2,'IncludeSkipConvolution',true,'Name','res5')
    residualBlockLayer(4*numFilters,'Name','res6')
    globalAveragePooling2dLayer('Name','gap')
    fullyConnectedLayer(numClasses,'Name','fc')
    softmaxLayer('Name','sm')];

dlnet = dlnetwork(layers);

Learnables имущества dlnetwork - это таблица, содержащая обучаемые параметры сети. Таблица содержит параметры вложенных слоев в отдельных строках. Просмотр обучаемых параметров слоя "res1".

learnables = dlnet.Learnables;
idx = learnables.Layer == "res1";
learnables(idx,:)
ans=8×3 table
    Layer            Parameter                  Value       
    ______    _______________________    ___________________

    "res1"    "Network/conv1/Weights"    {3x3x32x32 dlarray}
    "res1"    "Network/conv1/Bias"       {1x1x32    dlarray}
    "res1"    "Network/gn1/Offset"       {1x1x32    dlarray}
    "res1"    "Network/gn1/Scale"        {1x1x32    dlarray}
    "res1"    "Network/conv2/Weights"    {3x3x32x32 dlarray}
    "res1"    "Network/conv2/Bias"       {1x1x32    dlarray}
    "res1"    "Network/gn2/Offset"       {1x1x32    dlarray}
    "res1"    "Network/gn2/Scale"        {1x1x32    dlarray}

Для слоя "res1", установить коэффициент регуляризации L2 обучаемого параметра 'Weights' слоя 'conv1' на 2 с использованием setL2Factor функция.

factor = 2;
dlnet = setL2Factor(dlnet,'res1/Network/conv1/Weights',factor);

Получите обновленный коэффициент регуляризации L2 с помощью getL2Factor функция.

factor = getL2Factor(dlnet,'res1/Network/conv1/Weights')
factor = 2

Входные аргументы

свернуть все

Входной слой, заданный как скаляр Layer объект.

Имя параметра, определяемое как вектор символов или строковый скаляр.

Фактор регуляризации L2 для параметра, определенного как неотрицательный скаляр.

Программное обеспечение умножает этот коэффициент на глобальный коэффициент регуляризации L2 для определения коэффициента регуляризации L2 для указанного параметра. Например, если factor 2, то L2 регуляризация для указанного параметра в два раза больше глобального коэффициента регуляризации L2. Можно указать глобальный коэффициент регуляризации L2 с помощью trainingOptions функция.

Пример: 2

Путь к параметру вложенного слоя, заданному как строковый скаляр или символьный вектор. Вложенный слой - это пользовательский слой, который сам определяет граф слоев как обучаемый параметр.

Если вход в setL2Factor является вложенным слоем, то путь к параметру имеет вид "propertyName/layerName/parameterName", где:

  • propertyName является именем свойства, содержащего dlnetwork объект

  • layerName - имя слоя в dlnetwork объект

  • parameterName - имя параметра

Если существует несколько уровней вложенных слоев, укажите каждый уровень с помощью формы "propertyName1/layerName1/.../propertyNameN/layerNameN/parameterName", где propertyName1 и layerName1 соответствуют слою на входе в setL2Factor и последующие части соответствуют более глубоким уровням.

Пример: Для ввода слоя в setL2Factor, путь "Network/conv1/Weights" задает "Weights" параметр слоя с именем "conv1" в dlnetwork объект, заданный layer.Network.

Если вход в setL2Factor является dlnetwork объект и требуемый параметр находятся во вложенном слое, затем путь к параметру имеет вид "layerName1/propertyName/layerName/parameterName", где:

  • layerName1 - имя слоя на входе dlnetwork объект

  • propertyName - свойство слоя, содержащего dlnetwork объект

  • layerName - имя слоя в dlnetwork объект

  • parameterName - имя параметра

Если существует несколько уровней вложенных слоев, укажите каждый уровень с помощью формы "layerName1/propertyName1/.../layerNameN/propertyNameN/layerName/parameterName", где layerName1 и propertyName1 соответствуют слою на входе в setL2Factor и последующие части соответствуют более глубоким уровням.

Пример: Для dlnetwork вход в setL2Factor, путь "res1/Network/conv1/Weights" задает "Weights" параметр слоя с именем "conv1" в dlnetwork объект, заданный layer.Network, где layer - слой с именем "res1" во входной сети dlnet.

Типы данных: char | string

Сеть для пользовательских циклов обучения, указанная как dlnetwork объект.

Имя слоя, указанное как строковый скаляр или символьный вектор.

Типы данных: char | string

Выходные аргументы

свернуть все

Обновленный слой, возвращенный как Layer.

Обновленная сеть, возвращенная как dlnetwork.

Представлен в R2017b