Генерация кода для dlarray

Массив глубокого обучения хранит данные с метками формата дополнительных данных для пользовательских учебных циклов и позволяет функциям вычислить и использовать производные посредством автоматического дифференцирования. Чтобы узнать больше о пользовательских учебных циклах, автоматическое дифференцирование и массивы глубокого обучения, видят Глубокое обучение Пользовательские Учебные Циклы (Deep Learning Toolbox).

Генерация кода поддерживает и отформатированные и восстановленные после форматирования массивы глубокого обучения. dlarray объекты, содержащие gpuArrays также поддерживаются для генерации кода. Когда вы используете массивы глубокого обучения с генерацией кода центрального процессора и графического процессора, придерживаетесь этих ограничений:

Задайте dlarray для генерации кода

Для генерации кода используйте dlarray (Deep Learning Toolbox) функция, чтобы создать массивы глубокого обучения. Например, предположите, что у вас есть предварительно обученный dlnetwork (Deep Learning Toolbox) сетевой объект в mynet.mat Matfile. Чтобы предсказать ответы для этой сети, создайте функцию точки входа в MATLAB®.

Существует две возможности:

Примечание

Для генерации кода, dlarray введите к predict метод dlnetwork объектом должен быть single тип данных.

Проект 1 (Не рекомендуемый)

В этом примере проекта, вводе и выводе к функции точки входа, 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

(Рекомендуемый) проект 2

В этом примере проекта, вводе и выводе к 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 Функции объекта с поддержкой генерации кода

Для генерации кода вы ограничиваетесь функциями объекта глубокого обучения массивов, перечисленными в этой таблице.

dims (Deep Learning Toolbox)

Размерность помечает для dlarray

extractdata (Deep Learning Toolbox)

Извлеките данные из dlarray

finddim (Deep Learning Toolbox)

Найдите размерности с заданной меткой

stripdims (Deep Learning Toolbox)

Удалите dlarray метки

Функции Deep Learning Toolbox с dlarray Поддержка генерации кода

Операции глубокого обучения

ФункцияОписание
fullyconnect (Deep Learning Toolbox)

Полностью операция connect умножает вход на матрицу веса и затем добавляет вектор смещения.

sigmoid (Deep Learning Toolbox)

Сигмоидальная операция активации применяет сигмоидальную функцию к входным данным.

softmax (Deep Learning Toolbox)

softmax операция активации применяет функцию softmax к размерности канала входных данных.

Функции MATLAB с dlarray Поддержка генерации кода

Унарные поэлементные функции

ФункцияПримечания и ограничения
abs

Выход dlarray имеет тот же формат данных как вход dlarray.

atan2

Выход dlarray имеет тот же формат данных как вход dlarray.

cos
cosh
cot
csc
exp
log

  • Выход dlarray имеет тот же формат данных как вход dlarray.

  • Поскольку dlarray не поддерживает комплексные числа, вход dlarray должен иметь неотрицательные значения.

sec

Выход dlarray имеет тот же формат данных как вход dlarray.

sign
sin
sinh
sqrt

  • Выход dlarray имеет тот же формат данных как вход dlarray.

  • Поскольку dlarray не поддерживает комплексные числа, вход dlarray должен иметь неотрицательные значения.

tan

Выход dlarray имеет тот же формат данных как вход dlarray.

tanh
uplus, +
uminus, -

Бинарные поэлементные операторы

ФункцияПримечания и ограничения
minus, -

Если два dlarray входные параметры отформатированы, затем выход dlarray отформатирован с комбинацией обоих из их форматов данных. Функция использует неявное расширение, чтобы объединить входные параметры. Для получения дополнительной информации смотрите Неявное расширение с Форматами данных (Deep Learning Toolbox).

plus, +
rdivide, ./
times, .*

Функции сокращения

ФункцияПримечания и ограничения
mean
  • Выход dlarray имеет тот же формат данных как вход dlarray.

  • 'omitnan' опция не поддерживается.

  • Если вход dlarray находится на графическом процессоре, 'native' опция не поддерживается.

prod
  • Выход dlarray имеет тот же формат данных как вход dlarray.

  • 'omitnan' опция не поддерживается.

sum

Функции Extrema

ФункцияПримечания и ограничения
ceil

Выход dlarray имеет тот же формат данных как вход dlarray.

eps

  • Выход dlarray имеет тот же формат данных как вход dlarray.

  • Используйте eps(ones(‘like’, x)) получить скалярное значение эпсилона на основе типа данных dlarray x.

fix

Выход dlarray имеет тот же формат данных как вход dlarray.

floor

Выход dlarray имеет тот же формат данных как вход dlarray.

max
  • Когда вы находите максимальные или минимальные элементы одного dlarray, выход dlarray имеет тот же формат данных как вход dlarray.

  • Когда вы находите, что максимальные или минимальные элементы между два отформатировали dlarray входные параметры, выход dlarray имеет комбинацию обоих из их форматов данных. Функция использует неявное расширение, чтобы объединить входные параметры. Для получения дополнительной информации смотрите Неявное расширение с Форматами данных (Deep Learning Toolbox).

  • Выходной аргумент индекса не прослеживается и не может использоваться с автоматическим дифференцированием. Для получения дополнительной информации смотрите Использование Автоматическое Дифференцирование В Deep Learning Toolbox (Deep Learning Toolbox).

min
round

  • Только синтаксис Y = round(X) поддерживается.

  • Выход dlarray имеет тот же формат данных как вход dlarray.

Другие математические операции

ФункцияПримечания и ограничения
colon, :
  • Поддерживаемые операции:

    • a:b

    • a:b:c

    Для получения информации об индексации в dlarray, смотрите Индексацию (Deep Learning Toolbox).

  • Все входные параметры должны быть действительными скалярами. Выход dlarray восстанавливается после форматирования.

Логические операции

ФункцияПримечания и ограничения
and, &

Если два dlarray входные параметры отформатированы, затем выход dlarray отформатирован с комбинацией обоих из их форматов данных. Функция использует неявное расширение, чтобы объединить входные параметры. Для получения дополнительной информации смотрите Неявное расширение с Форматами данных (Deep Learning Toolbox).

eq, ==

Если два dlarray входные параметры отформатированы, затем выход dlarray отформатирован с комбинацией обоих из их форматов данных. Функция использует неявное расширение, чтобы объединить входные параметры. Для получения дополнительной информации смотрите Неявное расширение с Форматами данных (Deep Learning Toolbox).

ge, >=
gt, >
le, <=
lt, <
ne, ~=
or, |

Если два dlarray входные параметры отформатированы, затем выход dlarray отформатирован с комбинацией обоих из их форматов данных. Функция использует неявное расширение, чтобы объединить входные параметры. Для получения дополнительной информации смотрите Неявное расширение с Форматами данных (Deep Learning Toolbox).

xor

Функции манипуляции с размерами

ФункцияПримечания и ограничения
reshape

Выход dlarray восстанавливается после форматирования, даже если вход dlarray отформатирован.

Для генерации кода размерности размера должны быть фиксированным размером.

squeeze

Двумерный dlarray объекты незатронуты squeeze. Если вход dlarray отформатирован, функция удаляет метки размерности, принадлежащие одноэлементным размерностям. Если вход dlarray имеет больше чем две размерности и его треть, и выше размерностей одиночный элемент, затем функция отбрасывает эти размерности и их метки.

Операции перемещения

ФункцияПримечания и ограничения
ctranspose, '

Если вход dlarray отформатирован, затем метки обеих размерностей должны быть тем же самым. Функция выполняет перемещение неявно и транспонирует непосредственно только если необходимый для других операций.

permute

Если вход dlarray отформатирован, затем сочетание должно быть только среди тех размерностей, которые имеют ту же метку. Функция выполняет сочетания неявно и переставляет непосредственно только если необходимый для других операций.

Для генерации кода порядок размерности должен быть фиксированным размером.

ipermute

Если вход dlarray отформатирован, затем сочетание должно быть только среди тех размерностей, которые имеют ту же метку. Функция выполняет сочетания неявно и переставляет непосредственно только если необходимый для других операций.

Для генерации кода порядок размерности должен быть фиксированным размером.

transpose, .'

Если вход dlarray отформатирован, затем метки обеих размерностей должны быть тем же самым. Функция выполняет перемещение неявно и транспонирует непосредственно только если необходимый для других операций.

Функции конкатенации

ФункцияПримечания и ограничения
cat

dlarray входные параметры должны иметь соответствие с форматами или быть восстановлены после форматирования. Смешанные отформатированные и восстановленные после форматирования входные параметры поддерживаются. Если любой dlarray входные параметры отформатированы, затем выход dlarray отформатирован с тем же форматом данных.

Для генерации кода, порядка размерности к cat функция должна быть фиксированным размером.

horzcat
vertcat

Функции преобразования

ФункцияПримечания и ограничения
cast
  • cast(dlA,newdatatype) копирует данные в dlarray dlA в dlarray из базового типа данных newdatatype. newdatatype опцией должен быть 'double'единственный, или 'logical'. Выход dlarray отформатирован с тем же форматом данных как dlA.

  • cast(A,'like',Y) возвращает массив того же типа как Y. Если Y dlarray, затем выходом является dlarray это имеет тот же базовый тип данных как Y. Если Y находится на графическом процессоре, затем выход находится на графическом процессоре. Если оба A и Y dlarray объекты, затем выход dlarray отформатирован с тем же форматом данных как вход A.

double

Выходом является dlarray это содержит данные типа double.

logicalВыходом является dlarray это содержит данные типа logical.
singleВыходом является dlarray это содержит данные типа single.

Функции сравнения

ФункцияПримечания и ограничения
isequal

  • Синтаксис больше чем с двумя входными параметрами не поддерживается.

  • Два dlarray входные параметры равны, если числовые данные, которые они представляют, равны и если они оба или отформатированы с тем же форматом данных или восстановлены после форматирования.

isequaln

  • Синтаксис больше чем с двумя входными параметрами не поддерживается.

  • Два dlarray входные параметры равны, если числовые данные, которые они представляют, равны (обработка NaNs как равный) и если они оба или отформатированы с тем же форматом данных или восстановлены после форматирования.

Тип данных и идентификационные функции значения

ФункцияПримечания и ограничения
isfloat

Программное обеспечение применяет функцию к базовым данным входа dlarray.

islogical
isnumeric
isreal

Поскольку dlarray не поддерживает комплексные числа, эта функция всегда возвращает true для dlarray входной параметр.

Идентификационные функции размера

ФункцияПримечания и ограничения
iscolumnЭта функция возвращает true для dlarray это - вектор-столбец, где каждая размерность кроме первого является одиночным элементом. Например, 3 dlarray 1 на 1 вектор-столбец.
ismatrixЭта функция возвращает true для dlarray объекты только с двумя размерностями и для dlarray объекты, где каждая размерность кроме первых двух является одиночным элементом. Например, 3 4 1 dlarray матрица.
isrowЭта функция возвращает true для dlarray это - вектор-строка, где каждая размерность кроме второго является одиночным элементом. Например, 1 dlarray 3 на 1 вектор-строка.
isscalarN/A
isvectorЭта функция возвращает true для dlarray это - вектор-строка или вектор-столбец. Обратите внимание на то, что isvector не рассматривает 1 1 3 dlarray быть вектором.
lengthN/A
ndims

Если вход dlarray dlX отформатирован, затем ndims(dlX) возвращает количество меток размерности, даже если некоторые помеченные размерности запаздывают одноэлементные размерности.

numelN/A
size

Если вход dlarray dlX отформатирован, затем size(dlX) возвращает вектор из длины, равной количеству меток размерности, даже если некоторые помеченные размерности запаздывают одноэлементные размерности.

Функции создателя

ФункцияПримечания и ограничения
falseТолько 'like' синтаксис поддерживается для dlarray.
inf
nan
ones
rand
true
zeros

Индексация

Поддержки генерации кода, индексирующие dlarray объекты и предоставляют следующие поведения:

  • Если вы устанавливаете dlY(idx1,...,idxn) = dlX, затем dlY и dlX должно быть совместимое присвоение.

    • Размер данных не должен изменяться. За пределы операция присвоения не поддерживается.

    • Оператор присваивания не может добавить или пропустить U метки.

  • Генерация кода не поддерживает удаление частей dlarray объект при помощи dlX(idx1,…,idxn) = [].

Смотрите также

Объекты

Связанные примеры

Больше о