removeParameter

Удалите параметр из ONNXParameters объект

    Описание

    пример

    params = removeParameter(params,name) удаляет параметр, заданный как name от ONNXParameters params объекта.

    Примеры

    свернуть все

    Импортируйте сеть, сохраненную в формате ONNX, как функцию и измените сетевые параметры.

    Импортируйте предварительно обученную simplenet3fc.onnx сеть как функция. simplenet3fc является простой сверточной нейронной сетью, обученной на данных цифрового изображения. Для получения дополнительной информации о том, как создать сеть, подобную simplenet3fc, см. «Создание простой сети классификации изображений».

    Импортируйте simplenet3fc.onnx использование importONNXFunction, который возвращает ONNXParameters объект, который содержит сетевые параметры. Функция также создает новую функцию модели в текущей папке, которая содержит сетевую архитектуру. Укажите имя функции модели следующим simplenetFcn.

    params = importONNXFunction('simplenet3fc.onnx','simplenetFcn');
    A function containing the imported ONNX network has been saved to the file simplenetFcn.m.
    To learn how to use this function, type: help simplenetFcn.
    

    Отображение параметров, которые обновляются во время обучения (params.Learnables) и параметры, которые остаются неизменными во время обучения (params.Nonlearnables).

    params.Learnables
    ans = struct with fields:
        imageinput_Mean: [1×1 dlarray]
                 conv_W: [5×5×1×20 dlarray]
                 conv_B: [20×1 dlarray]
        batchnorm_scale: [20×1 dlarray]
            batchnorm_B: [20×1 dlarray]
                 fc_1_W: [24×24×20×20 dlarray]
                 fc_1_B: [20×1 dlarray]
                 fc_2_W: [1×1×20×20 dlarray]
                 fc_2_B: [20×1 dlarray]
                 fc_3_W: [1×1×20×10 dlarray]
                 fc_3_B: [10×1 dlarray]
    
    
    params.Nonlearnables
    ans = struct with fields:
                ConvStride1004: [2×1 dlarray]
        ConvDilationFactor1005: [2×1 dlarray]
               ConvPadding1006: [4×1 dlarray]
                ConvStride1007: [2×1 dlarray]
        ConvDilationFactor1008: [2×1 dlarray]
               ConvPadding1009: [4×1 dlarray]
                ConvStride1010: [2×1 dlarray]
        ConvDilationFactor1011: [2×1 dlarray]
               ConvPadding1012: [4×1 dlarray]
                ConvStride1013: [2×1 dlarray]
        ConvDilationFactor1014: [2×1 dlarray]
               ConvPadding1015: [4×1 dlarray]
    
    

    Сеть имеет параметры, которые представляют три полносвязных слоев. Чтобы увидеть параметры сверточных слоев fc_1, fc_2, и fc_3, откройте функцию model simplenetFcn.

    open simplenetFcn

    Прокрутка вниз к определениям слоев в функции simplenetFcn. В коде ниже показаны определения для слоев fc_1, fc_2, и fc_3.

    % Conv:
    [weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.fc_1] = prepareConvArgs(Vars.fc_1_W, Vars.fc_1_B, Vars.ConvStride1007, Vars.ConvDilationFactor1008, Vars.ConvPadding1009, 1, NumDims.relu1001, NumDims.fc_1_W);
    Vars.fc_1 = dlconv(Vars.relu1001, weights, bias, 'Stride', stride, 'DilationFactor', dilationFactor, 'Padding', padding, 'DataFormat', dataFormat);
    
    % Conv:
    [weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.fc_2] = prepareConvArgs(Vars.fc_2_W, Vars.fc_2_B, Vars.ConvStride1010, Vars.ConvDilationFactor1011, Vars.ConvPadding1012, 1, NumDims.fc_1, NumDims.fc_2_W);
    Vars.fc_2 = dlconv(Vars.fc_1, weights, bias, 'Stride', stride, 'DilationFactor', dilationFactor, 'Padding', padding, 'DataFormat', dataFormat);
    
    % Conv:
    [weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.fc_3] = prepareConvArgs(Vars.fc_3_W, Vars.fc_3_B, Vars.ConvStride1013, Vars.ConvDilationFactor1014, Vars.ConvPadding1015, 1, NumDims.fc_2, NumDims.fc_3_W);
    Vars.fc_3 = dlconv(Vars.fc_2, weights, bias, 'Stride', stride, 'DilationFactor', dilationFactor, 'Padding', padding, 'DataFormat', dataFormat);
    

    Можно удалить параметры полносвязного слоя fc_2 для уменьшения вычислительной сложности. Проверьте выходные размерности предыдущего слоя и входные размерности последующего слоя перед удалением среднего слоя из params. В этом случае размер выхода предыдущего слоя fc_1 равен 20, и вход сигнала последующего слоя fc_3 равно также 20.

    Удалите параметры слоя fc_2 при помощи removeParameter.

    params = removeParameter(params,'fc_2_B');
    params = removeParameter(params,'fc_2_W');
    params = removeParameter(params,'ConvStride1010');
    params = removeParameter(params,'ConvDilationFactor1011');
    params = removeParameter(params,'ConvPadding1012');

    Отобразите обновленные параметры learnable и nonlearnable.

    params.Learnables
    ans = struct with fields:
        imageinput_Mean: [1×1 dlarray]
                 conv_W: [5×5×1×20 dlarray]
                 conv_B: [20×1 dlarray]
        batchnorm_scale: [20×1 dlarray]
            batchnorm_B: [20×1 dlarray]
                 fc_1_W: [24×24×20×20 dlarray]
                 fc_1_B: [20×1 dlarray]
                 fc_3_W: [1×1×20×10 dlarray]
                 fc_3_B: [10×1 dlarray]
    
    
    params.Nonlearnables
    ans = struct with fields:
                ConvStride1004: [2×1 dlarray]
        ConvDilationFactor1005: [2×1 dlarray]
               ConvPadding1006: [4×1 dlarray]
                ConvStride1007: [2×1 dlarray]
        ConvDilationFactor1008: [2×1 dlarray]
               ConvPadding1009: [4×1 dlarray]
                ConvStride1013: [2×1 dlarray]
        ConvDilationFactor1014: [2×1 dlarray]
               ConvPadding1015: [4×1 dlarray]
    
    

    Измените архитектуру функции модели, чтобы отразить изменения в params таким образом можно использовать сеть для предсказания с новыми параметрами или переобучить сеть. Откройте функцию model simplenetFcn. Затем удалите полносвязный слой fc_2и изменяйте входные данные операции свертки dlconv для fc_3 слоев на Vars.fc_1.

    open simplenetFcn

    В коде ниже показаны слои fc_1 и fc_3.

    % Conv:
    [weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.fc_1] = prepareConvArgs(Vars.fc_1_W, Vars.fc_1_B, Vars.ConvStride1007, Vars.ConvDilationFactor1008, Vars.ConvPadding1009, 1, NumDims.relu1001, NumDims.fc_1_W);
    Vars.fc_1 = dlconv(Vars.relu1001, weights, bias, 'Stride', stride, 'DilationFactor', dilationFactor, 'Padding', padding, 'DataFormat', dataFormat);
    
    % Conv:
    [weights, bias, stride, dilationFactor, padding, dataFormat, NumDims.fc_3] = prepareConvArgs(Vars.fc_3_W, Vars.fc_3_B, Vars.ConvStride1013, Vars.ConvDilationFactor1014, Vars.ConvPadding1015, 1, NumDims.fc_2, NumDims.fc_3_W);
    Vars.fc_3 = dlconv(Vars.fc_1, weights, bias, 'Stride', stride, 'DilationFactor', dilationFactor, 'Padding', padding, 'DataFormat', dataFormat);
    

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

    свернуть все

    Параметры сети, заданные как ONNXParameters объект. params содержит сетевые параметры импортированной модели ONNX™.

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

    Пример: 'conv2_W'

    Пример: 'conv2_Padding'

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

    свернуть все

    Параметры сети, возвращенные как ONNXParameters объект. params содержит параметры сети, обновленные removeParameter.

    Введенный в R2020b