Добавьте параметр к ONNXParameters
объект
params = addParameter(
добавляет сетевой параметр, заданный как params
,name
,value
,type
)name
, value
, и type
на ONNXParameters
params объекта
. Возвращенный params
объект содержит параметры модели входного параметра params
вместе с добавленным параметром, сложенным последовательно. Добавленный параметр name
должны быть уникальными, непустыми и отличаться от имен параметров в params
.
params = addParameter(
добавляет сетевой параметр, заданный как params
,name
,value
,type
,NumDimensions
)name
, value
, type
, и 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
, откройте функцию model 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
, поскольку каждое добавленное имя параметра должно быть уникальным. The 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
таким образом можно использовать сеть для предсказания с новыми параметрами или переобучить сеть. Откройте функцию model 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);
params
- Параметры сетиONNXParameters
объектПараметры сети, заданные как ONNXParameters
объект. params
содержит сетевые параметры импортированной модели ONNX™.
name
- Имя параметраИмя параметра, заданное как вектор символов или строковый скаляр.
Пример: 'conv2_W'
Пример: 'conv2_Padding'
value
- Значение параметраЗначение параметра, заданное как числовой массив, вектор символов или строковый скаляр. Чтобы дублировать существующий слой сети (хранится в params
), скопируйте значения параметров слоя сети.
Пример: params.Learnables.conv1_W
Пример: params.Nonlearnables.conv1_Padding
Типы данных: single
| double
| char
| string
type
- Тип параметра 'Learnable'
| 'Nonlearnable'
| 'State'
Тип параметра, заданный как 'Learnable'
, 'Nonlearnable'
, или 'State'
.
Значение 'Learnable'
задает параметр, который обновляется сетью во время обучения (для примера, весов и смещения свертки).
Значение 'Nonlearnable'
задает параметр, который остается неизменным во время сетевого обучения (для примера, заполнения).
Значение 'State'
задает параметр, который содержит информацию, запоминаемую сетью между итерациями и обновляемую через несколько обучающих пакетов.
Типы данных: char
| string
NumDimensions
- Количество размерностей для каждого параметра Количество размерностей для каждого параметра, заданное как структура. NumDimensions
включает конечные синглтонные размерности.
Пример: params.NumDimensions.conv1_W
Пример: 4
params
- Параметры сетиONNXParameters
объектПараметры сети, возвращенные как ONNXParameters
объект. params
содержит параметры сети, обновленные addParameter
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.