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

Глубокое обучение сохраняет данные с необязательными метками формата данных для пользовательских циклов обучения и позволяет функциям вычислять и использовать производные посредством автоматической дифференциации. Дополнительные сведения о пользовательских циклах обучения, автоматической дифференциации и глубоких массивах обучения см. в разделе «Пользовательские циклы обучения глубокого обучения» (Deep Learning Toolbox).

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

Определите dlarray для генерации кода

Для генерации кода используйте dlarray (Deep Learning Toolbox) функция для создания глубоких обучающих массивов. Например, предположим, что у вас есть предварительно обученный dlnetwork (Deep Learning Toolbox) сетевой объект в mynet.mat MAT-файл. Чтобы предсказать отклики для этой сети, создайте функцию точки входа в 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)

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

sigmoid (Deep Learning Toolbox)

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

softmax (Deep Learning Toolbox)

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

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

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

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

Область выхода dlarray имеет тот же формат данных, что и входной dlarray.

cos

Область выхода dlarray имеет тот же формат данных, что и входной dlarray.

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, -

Функции Extrema

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

Область выхода dlarray имеет тот же формат данных, что и входной dlarray.

eps

  • Область выхода dlarray имеет тот же формат данных, что и входной dlarray.

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

fix

Область выхода dlarray имеет тот же формат данных, что и входной dlarray.

floor

Область выхода dlarray имеет тот же формат данных, что и входной dlarray.

round

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

  • Область выхода dlarray имеет тот же формат данных, что и входной dlarray.

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

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

Выходные выходы dlarray который содержит данные типа double.

logicalВыходные выходы dlarray который содержит данные типа logical.
singleВыходные выходы dlarray который содержит данные типа single.

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

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

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

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

isequaln

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

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

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

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

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

islogical
isnumeric
isreal

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

Функции идентификации размера

ФункцияПримечания и ограничения
lengthН/Д
ndims

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

numelН/Д
size

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

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

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

См. также

Объекты

Похожие примеры

Подробнее о