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 использование с MATLAB Coder™, смотрите, Генерируют Изображения Цифры Используя Вариационный Автоэнкодер на центральных процессорах Intel.
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) = [].