Добавьте параметр в 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 как функция, и измените сетевые параметры.
Создайте модель ONNX из предварительно обученного alexnet
сеть. Затем импортируйте alexnet.onnx
как функция. Импортируйте предварительно обученную сеть ONNX с помощью importONNXFunction
, который возвращает ONNXParamaters
объект, который содержит сетевые параметры. Функция также создает новую функцию модели в текущей папке, которая содержит сетевую архитектуру. Задайте имя функции модели как alexnetFcn
.
net = alexnet; exportONNXNetwork(net,'alexnet.onnx'); params = importONNXFunction('alexnet.onnx','alexnetFcn');
A function containing the imported ONNX network has been saved to the file alexnetFcn.m. To learn how to use this function, type: help alexnetFcn.
Отобразите параметры, которые обновляются во время обучения (params.Learnables
) и параметры, которые остаются неизменными во время обучения (params.Nonlearnables
).
params.Learnables
ans = struct with fields:
data_Mean: [227×227×3 dlarray]
conv1_W: [11×11×3×96 dlarray]
conv1_B: [96×1 dlarray]
conv2_W: [5×5×48×256 dlarray]
conv2_B: [256×1 dlarray]
conv3_W: [3×3×256×384 dlarray]
conv3_B: [384×1 dlarray]
conv4_W: [3×3×192×384 dlarray]
conv4_B: [384×1 dlarray]
conv5_W: [3×3×192×256 dlarray]
conv5_B: [256×1 dlarray]
fc6_W: [6×6×256×4096 dlarray]
fc6_B: [4096×1 dlarray]
fc7_W: [1×1×4096×4096 dlarray]
fc7_B: [4096×1 dlarray]
fc8_W: [1×1×4096×1000 dlarray]
fc8_B: [1000×1 dlarray]
params.Nonlearnables
ans = struct with fields:
conv1_Stride: [1×2 dlarray]
conv1_DilationFactor: [1×2 dlarray]
conv1_Padding: [1×1 dlarray]
pool1_PoolSize: [1×2 dlarray]
pool1_Stride: [1×2 dlarray]
pool1_Padding: [1×1 dlarray]
conv2_Stride: [1×2 dlarray]
conv2_DilationFactor: [1×2 dlarray]
conv2_Padding: [2×2 dlarray]
pool2_PoolSize: [1×2 dlarray]
pool2_Stride: [1×2 dlarray]
pool2_Padding: [1×1 dlarray]
conv3_Stride: [1×2 dlarray]
conv3_DilationFactor: [1×2 dlarray]
conv3_Padding: [2×2 dlarray]
conv4_Stride: [1×2 dlarray]
conv4_DilationFactor: [1×2 dlarray]
conv4_Padding: [2×2 dlarray]
conv5_Stride: [1×2 dlarray]
conv5_DilationFactor: [1×2 dlarray]
conv5_Padding: [2×2 dlarray]
pool5_PoolSize: [1×2 dlarray]
pool5_Stride: [1×2 dlarray]
pool5_Padding: [1×1 dlarray]
fc6_Stride: [1×2 dlarray]
fc6_DilationFactor: [1×2 dlarray]
fc6_Padding: [1×1 dlarray]
fc7_Stride: [1×2 dlarray]
fc7_DilationFactor: [1×2 dlarray]
fc7_Padding: [1×1 dlarray]
fc8_Stride: [1×2 dlarray]
fc8_DilationFactor: [1×2 dlarray]
fc8_Padding: [1×1 dlarray]
Сеть имеет параметры, которые представляют три полносвязных слоя. Можно добавить полносвязный слой в исходных параметрах params
между слоями fc7
и fc8
. Новый слой может увеличить точность классификации.
Назовите новый слой fc9
, потому что каждое добавленное название параметра должно быть уникальным. addParameter
функция всегда добавляет новый параметр последовательно в params.Learnables
или params.Nonlearnables
структура. Порядок слоев в функциональном alexnetFcn
модели определяет порядок, в котором выполняются слоя сети. Порядок или имена параметров не влияют на порядок выполнения.
Добавьте новый полносвязный слой fc9
теми же параметрами как fc7
.
params = addParameter(params,'fc9_W',params.Learnables.fc7_W,'Learnable'); params = addParameter(params,'fc9_B',params.Learnables.fc7_B,'Learnable'); params = addParameter(params,'fc9_Stride',params.Nonlearnables.fc7_Stride,'Nonlearnable'); params = addParameter(params,'fc9_DilationFactor',params.Nonlearnables.fc7_DilationFactor,'Nonlearnable'); params = addParameter(params,'fc9_Padding',params.Nonlearnables.fc7_Padding,'Nonlearnable');
Отобразите обновленные learnable и nonlearnable параметры.
params.Learnables
ans = struct with fields:
data_Mean: [227×227×3 dlarray]
conv1_W: [11×11×3×96 dlarray]
conv1_B: [96×1 dlarray]
conv2_W: [5×5×48×256 dlarray]
conv2_B: [256×1 dlarray]
conv3_W: [3×3×256×384 dlarray]
conv3_B: [384×1 dlarray]
conv4_W: [3×3×192×384 dlarray]
conv4_B: [384×1 dlarray]
conv5_W: [3×3×192×256 dlarray]
conv5_B: [256×1 dlarray]
fc6_W: [6×6×256×4096 dlarray]
fc6_B: [4096×1 dlarray]
fc7_W: [1×1×4096×4096 dlarray]
fc7_B: [4096×1 dlarray]
fc8_W: [1×1×4096×1000 dlarray]
fc8_B: [1000×1 dlarray]
fc9_W: [1×1×4096×4096 dlarray]
fc9_B: [4096×1 dlarray]
params.Nonlearnables
ans = struct with fields:
conv1_Stride: [1×2 dlarray]
conv1_DilationFactor: [1×2 dlarray]
conv1_Padding: [1×1 dlarray]
pool1_PoolSize: [1×2 dlarray]
pool1_Stride: [1×2 dlarray]
pool1_Padding: [1×1 dlarray]
conv2_Stride: [1×2 dlarray]
conv2_DilationFactor: [1×2 dlarray]
conv2_Padding: [2×2 dlarray]
pool2_PoolSize: [1×2 dlarray]
pool2_Stride: [1×2 dlarray]
pool2_Padding: [1×1 dlarray]
conv3_Stride: [1×2 dlarray]
conv3_DilationFactor: [1×2 dlarray]
conv3_Padding: [2×2 dlarray]
conv4_Stride: [1×2 dlarray]
conv4_DilationFactor: [1×2 dlarray]
conv4_Padding: [2×2 dlarray]
conv5_Stride: [1×2 dlarray]
conv5_DilationFactor: [1×2 dlarray]
conv5_Padding: [2×2 dlarray]
pool5_PoolSize: [1×2 dlarray]
pool5_Stride: [1×2 dlarray]
pool5_Padding: [1×1 dlarray]
fc6_Stride: [1×2 dlarray]
fc6_DilationFactor: [1×2 dlarray]
fc6_Padding: [1×1 dlarray]
fc7_Stride: [1×2 dlarray]
fc7_DilationFactor: [1×2 dlarray]
fc7_Padding: [1×1 dlarray]
fc8_Stride: [1×2 dlarray]
fc8_DilationFactor: [1×2 dlarray]
fc8_Padding: [1×1 dlarray]
fc9_Stride: [1×2 dlarray]
fc9_DilationFactor: [1×2 dlarray]
fc9_Padding: [1×1 dlarray]
Измените архитектуру функции модели, чтобы отразить изменения в params
таким образом, можно использовать сеть для предсказания новыми параметрами или переобучить сеть. Откройте функцию модели при помощи open alexnetFcn
и добавьте полносвязный слой fc9
между слоями fc7
и fc8
.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.