setLearnRateFactor

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

Описание

пример

layerUpdated = setLearnRateFactor(layer,parameterName,factor) устанавливает коэффициент скорости обучения для параметра с именем parameterName в layer на factor.

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Установите и получите коэффициент скорости обучения настраиваемого параметра 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);

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

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

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

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

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

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

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);

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

dlnet.Layers(6).Network.Layers
ans = 
  7x1 Layer array with layers:

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

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

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

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

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

Загрузка предварительно обученной сети.

net = squeezenet;

Преобразуйте сеть в график слоев, удалите выход слой и преобразуйте его в dlnetwork объект.

lgraph = layerGraph(net);
lgraph = removeLayers(lgraph,'ClassificationLayer_predictions');
dlnet = dlnetwork(lgraph);

The Learnables свойство dlnetwork объект является таблицей, которая содержит настраиваемые параметры сети. Таблица включает параметры вложенных слоев в отдельные строки. Просмотрите первые несколько строк таблицы learnables.

learnables = dlnet.Learnables;
head(learnables)
ans=8×3 table
          Layer           Parameter           Value       
    __________________    _________    ___________________

    "conv1"               "Weights"    {3x3x3x64  dlarray}
    "conv1"               "Bias"       {1x1x64    dlarray}
    "fire2-squeeze1x1"    "Weights"    {1x1x64x16 dlarray}
    "fire2-squeeze1x1"    "Bias"       {1x1x16    dlarray}
    "fire2-expand1x1"     "Weights"    {1x1x16x64 dlarray}
    "fire2-expand1x1"     "Bias"       {1x1x64    dlarray}
    "fire2-expand3x3"     "Weights"    {3x3x16x64 dlarray}
    "fire2-expand3x3"     "Bias"       {1x1x64    dlarray}

Чтобы заморозить настраиваемые параметры сети, закольцовывайте настраиваемые параметры и установите скорость обучения равной 0 с помощью setLearnRateFactor функция.

factor = 0;

numLearnables = size(learnables,1);
for i = 1:numLearnables
    layerName = learnables.Layer(i);
    parameterName = learnables.Parameter(i);
    
    dlnet = setLearnRateFactor(dlnet,layerName,parameterName,factor);
end

Чтобы использовать обновленные коэффициенты скорости обучения при обучении, необходимо передать объект dlnetwork в функцию обновления в пользовательском цикле обучения. Для примера используйте команду

[dlnet,velocity] = sgdmupdate(dlnet,gradients,velocity);

Входные параметры

свернуть все

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

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

Коэффициент скорости обучения для параметра, заданный как неотрицательный скаляр.

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

Пример: 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

Введенный в R2017b
Для просмотра документации необходимо авторизоваться на сайте