exponenta event banner

getL2Factor

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

Описание

пример

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

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

пример

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

пример

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

пример

factor = getL2Factor(dlnet,parameterPath) возвращает коэффициент регуляризации 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 объект.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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