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.

    Screen shot of sample report generator showing dlarray size as 1-by-1

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

См. также

Объекты

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

Подробнее о