addParameter

Добавьте параметр в ONNXParameters объект

    Описание

    пример

    params = addParameter(params,name,value,type) добавляет сетевой параметр, заданный nameЗначение, и type к ONNXParameters объект params. Возвращенный params объект содержит параметры модели входного параметра params вместе с добавленным параметром, сложенным последовательно. Добавленный параметр name должно быть уникальным, непустым, и отличаться от названий параметра в params.

    params = addParameter(params,name,value,type,NumDimensions) добавляет сетевой параметр, заданный nameЗначениеВвод, и NumDimensions к 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]
    
    

    Сеть имеет параметры, которые представляют три полносвязных слоя. Можно добавить полносвязный слой в исходных параметрах params между слоями fc_2 и fc_3. Новый слой может увеличить точность классификации.

    Видеть параметры сверточных слоев fc_2 и fc_3, откройте функциональный simplenetFcn модели.

    open simplenetFcn

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

    % 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_4, потому что каждое добавленное название параметра должно быть уникальным. addParameter функция всегда добавляет новый параметр последовательно в params.Learnables или params.Nonlearnables структура. Порядок слоев в функциональном simplenetFcn модели определяет порядок, в котором выполняются слоя сети. Имена и порядок параметров не влияют на порядок выполнения.

    Добавьте новый полносвязный слой fc_4 теми же параметрами как fc_2.

    params = addParameter(params,'fc_4_W',params.Learnables.fc_2_W,'Learnable');
    params = addParameter(params,'fc_4_B',params.Learnables.fc_2_B,'Learnable');
    params = addParameter(params,'fc_4_Stride',params.Nonlearnables.ConvStride1010,'Nonlearnable');
    params = addParameter(params,'fc_4_DilationFactor',params.Nonlearnables.ConvDilationFactor1011,'Nonlearnable');
    params = addParameter(params,'fc_4_Padding',params.Nonlearnables.ConvPadding1012,'Nonlearnable');

    Отобразите обновленные 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_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]
                 fc_4_W: [1×1×20×20 dlarray]
                 fc_4_B: [20×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_4_Stride: [2×1 dlarray]
           fc_4_DilationFactor: [2×1 dlarray]
                  fc_4_Padding: [4×1 dlarray]
    
    

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

    open simplenetFcn

    Код ниже показов новый слой fc_4 в его положении, а также слоях fc_2 и fc_3.

    % 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_4] = prepareConvArgs(Vars.fc_4_W, Vars.fc_4_B, Vars.fc_4_Stride, Vars.fc_4_DilationFactor, Vars.fc_4_Padding, 1, NumDims.fc_2, NumDims.fc_4_W);
    Vars.fc_4 = dlconv(Vars.fc_2, 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_4, NumDims.fc_3_W);
    Vars.fc_3 = dlconv(Vars.fc_4, weights, bias, 'Stride', stride, 'DilationFactor', dilationFactor, 'Padding', padding, 'DataFormat', dataFormat);
    

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

    свернуть все

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

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

    Пример: 'conv2_W'

    Пример: 'conv2_Padding'

    Значение параметра в виде числового массива, вектора символов или строкового скаляра. Скопировать существующий слой сети (сохраненный в params), скопируйте значения параметров слоя сети.

    Пример: params.Learnables.conv1_W

    Пример: params.Nonlearnables.conv1_Padding

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

    Тип параметра в виде 'Learnable', 'Nonlearnable', или 'State'.

    • Значение 'Learnable' задает параметр, который обновляется сетью во время обучения (например, веса и смещение свертки).

    • Значение 'Nonlearnable' задает параметр, который остается неизменным во время сетевого обучения (например, дополняя).

    • Значение 'State' задает параметр, который содержит информацию, которую помнит сеть между итерациями и обновленную через несколько учебных пакетов.

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

    Количество размерностей для каждого параметра в виде структуры. NumDimensions включает запаздывание одноэлементных размерностей.

    Пример: params.NumDimensions.conv1_W

    Пример 4

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

    свернуть все

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

    Смотрите также

    | |

    Введенный в R2020b