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 тип данных.