Сети и слои, поддержанные для генерации кода С++

MATLAB® Coder™ поддерживает генерацию кода для ряда и сверточных нейронных сетей направленного графа без петель (DAG) (CNNs или ConvNets). Можно сгенерировать код для любой обученной сверточной нейронной сети, слои которой поддерживаются для генерации кода. Смотрите Поддерживаемые Слои.

Поддерживаемые предварительно обученные сети

Следующие предварительно обученные сети, доступные в Deep Learning Toolbox™, поддерживаются для генерации кода.

Сетевое имяОписаниеБиблиотека ARM® ComputeIntel® MKL-DNN
AlexNet

Сверточная нейронная сеть AlexNet. Для предварительно обученной модели AlexNet смотрите alexnet.

ДаДа
GoogLeNet

Сверточная нейронная сеть GoogLeNet. Для предварительно обученной модели GoogLeNet смотрите googlenet.

ДаДа
Inception-v3Сверточная нейронная сеть Inception-v3. Для предварительно обученной модели Inception-v3 смотрите inceptionv3.ДаДа
MobileNet-v2

Сверточная нейронная сеть MobileNet-v2. Для предварительно обученной модели MobileNet-v2 смотрите mobilenetv2.

ДаДа
ResNet

Сверточные нейронные сети ResNet-50 и ResNet-101. Для предварительно обученных моделей ResNet смотрите resnet50 и resnet101.

ДаДа
SegNet

Мультикласс pixelwise сеть сегментации. Для получения дополнительной информации смотрите segnetLayers.

НетДа
SqueezeNet

Маленький, глубокая нейронная сеть. Для предварительно обученных моделей ResNet смотрите squeezenet.

ДаДа
VGG-16

Сверточная нейронная сеть VGG-16. Для предварительно обученной модели VGG-16 смотрите vgg16.

ДаДа
VGG-19

Сверточная нейронная сеть VGG-19. Для предварительно обученной модели VGG-19 смотрите vgg19.

ДаДа

Поддерживаемые слои

Следующие слои поддерживаются для генерации кода MATLAB Coder для целевых библиотек глубокого обучения, заданных в таблице.

Если вы устанавливаете Интерфейс MATLAB Coder пакета поддержки для Библиотек Глубокого обучения, можно использовать coder.getDeepLearningLayers видеть список слоев, поддержанных для определенной библиотеки глубокого обучения. Например:

coder.getDeepLearningLayers('mkldnn')

Имя слояОписаниеARM вычисляет библиотекуIntel MKL-DNN
additionLayer

Слой Addition

ДаДа
averagePooling2dLayer

Средний слой объединения

ДаДа
batchNormalizationLayer

Пакетный слой нормализации

ДаДа
classificationLayer

Создайте классификацию выходной слой

ДаДа
clippedReluLayer

Отсеченный слой Rectified Linear Unit (ReLU)

ДаДа
convolution2dLayer

2D слой свертки

Да

Да

crop2dLayer

Слой, который применяет 2D обрезку к входу

ДаДа
CrossChannelNormalizationLayer

Мудрый каналом локальный слой нормализации ответа

ДаДа

Пользовательские выходные слои

Все выходные слои включая пользовательскую классификацию или регрессию выводят слои, созданные при помощи nnet.layer.ClassificationLayer или nnet.layer.RegressionLayer.

Для примера, показывающего, как задать пользовательскую классификацию выходной слой и задать функцию потерь, смотрите, Задают Пользовательскую Классификацию Выходной Слой (Deep Learning Toolbox).

Для примера, показывающего, как задать пользовательскую регрессию выходной слой и задать функцию потерь, смотрите, Задают Пользовательскую Регрессию Выходной Слой (Deep Learning Toolbox).

Да

Да

depthConcatenationLayer

Слой конкатенации глубины

Да

Да

  • Чтобы сгенерировать код, который использует MKL-DNN v0.14, или все размерности канала входных параметров слоя должны быть множителями 8 или всеми размерностями канала, должны быть немножители 8.

dropoutLayer

Слой Dropout

ДаДа
fullyConnectedLayer

Полносвязный слой

ДаДа
globalAveragePooling2dLayer

Глобальный средний слой объединения для пространственных данных

Да

Да

groupedConvolution2dLayer

2D сгруппированный сверточный слой

Да

  • Если вы задаете целое число для numGroups, затем значение должно быть меньше чем или равно 2.

Да

imageInputLayer

Отобразите входной слой

  • Генерация кода не поддерживает 'Normalization' заданное использование указателя на функцию.

ДаДа
leakyReluLayer

Текучий слой Rectified Linear Unit (ReLU)

ДаДа
maxPooling2dLayer

Слой объединения Max

ДаДа
maxUnpooling2dLayer

Слой необъединения Max

НетДа
pixelClassificationLayer

Создайте слой классификации пикселей для семантической сегментации

ДаДа
regressionLayer

Создайте регрессию выходной слой

ДаДа
reluLayer

Слой Rectified Linear Unit (ReLU)

ДаДа
softmaxLayer

Слой Softmax

Да

Да

nnet.keras.layer.FlattenCStyleLayer

Сглаживает активации в 1D C-стиль принятия (упорядоченный по строкам) порядок

Да

Да

nnet.keras.layer.GlobalAveragePooling2dLayer

Глобальный средний слой объединения для пространственных данных

Да

Да

nnet.keras.layer.SigmoidLayer

Сигмоидальный слой активации

Да

Да

nnet.keras.layer.TanhLayer

Гиперболический слой активации касательной

Да

Да

nnet.keras.layer.ZeroPadding2dLayer

Нулевой дополнительный слой для 2D входа

Да

Да

nnet.onnx.layer.ElementwiseAffineLayer

Слой, который выполняет поэлементное масштабирование входа, сопровождаемого сложением

Да

Да

nnet.onnx.layer.FlattenLayer

Сгладьте слой для сети ONNX™

Да

Да

nnet.onnx.layer.IdentityLayer

Слой, который реализует единичный оператор ONNX.

Да

Да

tanhLayer

Гиперболическая касательная (tanh) слой

Да

Да

transposedConv2dLayer

Транспонированный 2D слой свертки

Генерация кода не поддерживает асимметричную обрезку входа. Например, задавая векторный [t b l r] для 'Cropping' параметр, чтобы обрезать верхнюю часть, нижнюю часть, оставленную, и право на вход, не поддержан.

Да

Да

YOLOv2OutputLayer

Выведите слой для сети обнаружения объектов YOLO v2

Да

Да

YOLOv2ReorgLayer

Слой Reorganization для сети обнаружения объектов YOLO v2

Да

Да

YOLOv2TransformLayer

Преобразуйте слой для сети обнаружения объектов YOLO v2

Да

Да

Ограничение с MKL-DNN и большими отрицательными входными значениями к слою Softmax

Сгенерированный код для softmax слоя может быть неправильным (содержите NaN значения), когда все следующие условия верны:

  • Вы генерируете код с помощью MKL-DNN.

  • Сеть является сетью FCN или пользовательской сетью (сеть, которую вы создаете и обучаете).

  • Вход к softmax слою имеет большую, отрицательную величину. Если softmax слою не предшествует слой ReLU, вход к softmax слою может быть большой, отрицательной величиной.

Ограничение для convolution2dLayer для MKL-DNN и центральных процессоров то использование AVX-512

Для MKL-DNN v0.14 и центральных процессоров, которые используют AVX-512, сгенерированный код для операций свертки может привести к неправильным результатам, если сеть имеет слои свертки с этими размерами и дополнением:

  • Входные тензоры к слою свертки имеют высоту и ширину, которые являются множителями 224.

  • Дополняющий правильный параметр слоя свертки имеет ненулевое значение.

  • Количество выходных фильтров слоя свертки является кратным 16.

Проверьте, не содержит ли выход сгенерированного кода такие неправильные результаты путем сравнения его с выходом, полученным из выполнения predict в сети в MATLAB.

Поддерживаемые классы

Класс

Описание

ARM вычисляет библиотеку

Intel MKL-DNN

yolov2ObjectDetector

  • Только detect метод yolov2ObjectDetector поддерживается для генерации кода.

  • roi аргумент к detect метод должен быть постоянной генерацией кода (coder.const()) и 1x4 вектор.

  • Только Threshold, SelectStrongest, MinSize, и MaxSize пары "имя-значение" для detect поддерживаются.

  • labels выход detect возвращен как массив ячеек из символьных векторов, например, {'car','bus'}.

Да

Да

Смотрите также

Похожие темы