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 без аргументов размера. Например,
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)около-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)около-4(C).
Создание кода не поддерживает индексирование с помощью dlarray объекты.
Для создания кода, dlarray входные данные для predict способ dlnetwork объект должен быть single тип данных.