dlarray
Массив глубокого обучения хранит данные с метками формата дополнительных данных для пользовательских учебных циклов и позволяет функциям вычислить и использовать производные посредством автоматического дифференцирования. Чтобы узнать больше о пользовательских учебных циклах, автоматическое дифференцирование и массивы глубокого обучения, видят Глубокое обучение Пользовательские Учебные Циклы (Deep Learning Toolbox).
Генерация кода поддерживает и отформатированные и восстановленные после форматирования массивы глубокого обучения. dlarray
объекты, содержащие gpuArrays
также поддерживаются для генерации кода. Когда вы используете массивы глубокого обучения с генерацией кода центрального процессора и графического процессора, придерживаетесь этих ограничений:
dlarray
для генерации кодаДля генерации кода используйте dlarray
(Deep Learning Toolbox) функция, чтобы создать массивы глубокого обучения. Например, предположите, что у вас есть предварительно обученный dlnetwork
(Deep Learning Toolbox) сетевой объект в mynet.mat
Matfile. Чтобы предсказать ответы для этой сети, создайте функцию точки входа в MATLAB®.
Существует две возможности:
Примечание
Для генерации кода, dlarray
введите к predict
метод dlnetwork
объектом должен быть single
тип данных.
В этом примере проекта, вводе и выводе к функции точки входа, foo
имеют dlarray
типы. Этот тип функции точки входа не рекомендуется для генерации кода потому что в MATLAB, dlarray
осуществляет порядок, маркирует 'SCBTU'
. Это поведение реплицировано для генерации кода MEX. Однако для автономной генерации кода, такой как статические, динамические библиотеки или исполняемые файлы, формат данных следует спецификации fmt
аргумент dlarray
объект. В результате, если вводом или выводом функции точки входа является dlarray
возразите и его порядком меток не является 'SCBTU'
, затем формат данных будет отличаться между средой MATLAB и автономным кодом.
function dlOut = foo(dlIn) persistent dlnet; if isempty(dlnet) dlnet = coder.loadDeepLearningNetwork('mynet.mat'); end dlOut = predict(dlnet, dlIn); end
В этом примере проекта, вводе и выводе к foo
имеют примитивные типы данных и dlarray
объект создается в функции. extractdata
(Deep Learning Toolbox) метод dlarray
объект возвращает данные в dlarray
dlA
как выход foo
. Выход a
имеет совпадающий тип данных как базовый тип данных в dlA
.
Когда по сравнению с Design 1
, этот проект точки входа имеет следующие преимущества:
Более легкая интеграция с автономными рабочими процессами генерации кода, такими как статические, динамические библиотеки или исполняемые файлы.
Формат данных выхода от extractdata
функция имеет тот же порядок ('SCBTU'
) и в среде MATLAB и в сгенерированном коде.
Улучшает производительность для рабочих процессов MEX.
Упрощает Simulink® рабочие процессы с помощью блоков MATLAB Function в качестве Simulink исходно не поддерживают dlarray
объекты.
function a = foo(in) dlIn = dlarray(in, 'SSC'); persistent dlnet; if isempty(dlnet) dlnet = coder.loadDeepLearningNetwork('mynet.mat'); end dlA = predict(dlnet, dlIn); a = extractdata(dlA); end
Видеть пример dlnetwork
и dlarray
использование с GPU Coder™, смотрите, Генерируют Изображения Цифры на NVIDIA графический процессор Используя Вариационный Автоэнкодер.
dlarray
Функции объекта с поддержкой генерации кодаДля генерации кода вы ограничиваетесь функциями объекта глубокого обучения массивов, перечисленными в этой таблице.
| Размерность помечает для |
| Извлеките данные из |
| Найдите размерности с заданной меткой |
| Удалите |
dlarray
Поддержка генерации кодаФункция | Описание |
---|---|
fullyconnect (Deep Learning Toolbox) | Полностью операция connect умножает вход на матрицу веса и затем добавляет вектор смещения. |
sigmoid (Deep Learning Toolbox) | Сигмоидальная операция активации применяет сигмоидальную функцию к входным данным. |
softmax (Deep Learning Toolbox) | softmax операция активации применяет функцию softmax к размерности канала входных данных. |
dlarray
Поддержка генерации кодаФункция | Примечания и ограничения |
---|---|
abs | Выход |
atan2 | Выход |
cos | |
cosh | |
cot | |
csc | |
exp | |
log |
|
sec | Выход |
sign | |
sin | |
sinh | |
sqrt |
|
tan | Выход |
tanh | |
uplus , + | |
uminus , - |
Функция | Примечания и ограничения |
---|---|
minus , - | Если два |
plus , + | |
rdivide , ./ | |
times , .* |
Функция | Примечания и ограничения |
---|---|
mean |
|
prod |
|
sum |
Функция | Примечания и ограничения |
---|---|
ceil | Выход |
eps |
|
fix | Выход |
floor | Выход |
max |
|
min | |
round |
|
Функция | Примечания и ограничения |
---|---|
colon , : |
|
Функция | Примечания и ограничения |
---|---|
and , & | Если два |
eq , == | Если два |
ge , >= | |
gt , > | |
le , <= | |
lt , < | |
ne , ~= | |
or , | | Если два |
xor |
Функция | Примечания и ограничения |
---|---|
reshape | Выход Для генерации кода размерности размера должны быть фиксированным размером. |
squeeze | Двумерный |
Функция | Примечания и ограничения |
---|---|
ctranspose , ' | Если вход |
permute | Если вход Для генерации кода порядок размерности должен быть фиксированным размером. |
ipermute | Если вход Для генерации кода порядок размерности должен быть фиксированным размером. |
transpose , .' | Если вход |
Функция | Примечания и ограничения |
---|---|
cat |
Для генерации кода, порядка размерности к |
horzcat | |
vertcat |
Функция | Примечания и ограничения |
---|---|
cast |
|
double | Выходом является |
logical | Выходом является dlarray это содержит данные типа logical . |
single | Выходом является dlarray это содержит данные типа single . |
Функция | Примечания и ограничения |
---|---|
isequal |
|
isequaln |
|
Функция | Примечания и ограничения |
---|---|
iscolumn | Эта функция возвращает true для dlarray это - вектор-столбец, где каждая размерность кроме первого является одиночным элементом. Например, 3 dlarray 1 на 1 вектор-столбец. |
ismatrix | Эта функция возвращает true для dlarray объекты только с двумя размерностями и для dlarray объекты, где каждая размерность кроме первых двух является одиночным элементом. Например, 3 4 1 dlarray матрица. |
isrow | Эта функция возвращает true для dlarray это - вектор-строка, где каждая размерность кроме второго является одиночным элементом. Например, 1 dlarray 3 на 1 вектор-строка. |
isscalar | N/A |
isvector | Эта функция возвращает true для dlarray это - вектор-строка или вектор-столбец. Обратите внимание на то, что isvector не рассматривает 1 1 3 dlarray быть вектором. |
length | N/A |
ndims | Если вход |
numel | N/A |
size | Если вход |
Поддержки генерации кода, индексирующие dlarray
объекты и предоставляют следующие поведения:
Если вы устанавливаете dlY(idx1,...,idxn) = dlX
, затем dlY
и dlX
должно быть совместимое присвоение.
Размер данных не должен изменяться. За пределы операция присвоения не поддерживается.
Оператор присваивания не может добавить или пропустить U
метки.
Генерация кода не поддерживает удаление частей dlarray
объект при помощи dlX(idx1,…,idxn) = []
.