Удалите параметр из 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
, откройте функциональный 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
таким образом, можно использовать сеть для предсказания новыми параметрами или переобучить сеть. Откройте функциональный 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);
params
— Сетевые параметрыONNXParameters
объектСетевые параметры в виде ONNXParameters
объект. params
содержит сетевые параметры импортированной модели ONNX™.
name
— Имя параметраИмя параметра в виде вектора символов или строкового скаляра.
Пример: 'conv2_W'
Пример: 'conv2_Padding'
params
— Сетевые параметрыONNXParameters
объектСетевые параметры, возвращенные как ONNXParameters
объект. params
содержит сетевые параметры, обновленные removeParameter
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.