dlarray
Ограничения для генерации кодаДля генерации кода используйте dlarray
(Deep Learning Toolbox) функция для создания глубоких обучающих массивов. Например, предположим, что у вас есть предварительно обученный dlnetwork
(Deep Learning Toolbox) сетевой объект в mynet.mat
MAT-файл. Чтобы предсказать отклики для этой сети, создайте функцию точки входа в MATLAB® как показано на этом коде.
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
Для глубокого обучения массивов генерация кода имеет следующие ограничения:
Аргумент формата данных dlarray
объект должен быть константой времени компиляции. Для примера,
function out = foo() dlA = dlarray(ones(5,4),'SSC'); %fmt 'SSC' is constant . . . end
Данные входы к dlarray
объект должен иметь фиксированный размер. Для примера, dlarray
dlA
не поддерживается как A
имеет переменный размер.
function dlA = foo() A = ones(5,4); coder.varsize('A') %'A' is variable sized. dlA = dlarray(A, 'SSC'); % Error: not supported. end
Генерация кода не поддерживает создание dlarray
введите объект при помощи coder.typeof
функция с заданными верхним связанным размером и переменными размерностями. Для примера,
function dlA = foo() A = dlarray(ones(5,4),'SC'); A_type = coder.typeof(A,[5 10],[1 0]); % Error: not supported. end
Генерация кода поддерживает использование coder.typeof
без аргументов size. Для примера,
A = dlarray(ones(5,4),'SC');
A_type = coder.typeof(A);
В отчете генерации кода не отображается размер dlarray
объект. Размер всегда отображается следующим 1x1
.
В MATLAB, dlarray
применяет порядок меток 'SCBTU'
. Это обеспечение устраняет неоднозначную семантику в операциях, которая неявно совпадает с метками между входами. Это поведение имитируется во время генерации кода MEX. Однако для автономной генерации кода, такой как статические, динамические библиотеки или исполняемые файлы, формат данных соответствует спецификации fmt
аргумент dlarray
объект. В результате, если вход или выход функции точки входа является dlarray
объект и его порядок меток не 'SCBTU'
, тогда размещение данных будет отличаться между окружением MATLAB и автономным кодом.
Например, рассмотрим функцию foo
с dlarray
объект как выход.
function dlA = foo() rng default dlA = dlarray(rand(5,4), 'BC'); end
В MATLAB, dlA
является 4(C)
-by- 5(B)
.
dlA = 4(C) × 5(B) dlarray 0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 0.2785 0.5469 0.9575 0.9649 0.1576 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157 0.7922 0.9595
Для генерации автономного кода, dlA
является 5(B)
-by- 4(C)
.
Генерация кода не поддерживает индексацию с dlarray
объекты.
Для генерации кода, dlarray
вход в predict
метод dlnetwork
объект должен быть single
тип данных.