MATLAB® Coder™ поддерживает генерацию кода для ряда и сверточных нейронных сетей направленного графа без петель (DAG) (CNNs или ConvNets). Можно сгенерировать код для любой обученной сверточной нейронной сети, слои которой поддерживаются для генерации кода. Смотрите Поддерживаемые Слои.
Следующие предварительно обученные сети, доступные в Deep Learning Toolbox™, поддерживаются для генерации кода.
Сетевое имя | Описание | Библиотека ARM® Compute | Intel® MKL-DNN |
---|---|---|---|
AlexNet | Сверточная нейронная сеть AlexNet. Для предварительно обученной модели AlexNet смотрите | Да | Да |
GoogLeNet | Сверточная нейронная сеть GoogLeNet. Для предварительно обученной модели GoogLeNet смотрите | Да | Да |
Inception-v3 | Сверточная нейронная сеть Inception-v3. Для предварительно обученной модели Inception-v3 смотрите inceptionv3 . | Да | Да |
MobileNet-v2 | Сверточная нейронная сеть MobileNet-v2. Для предварительно обученной модели MobileNet-v2 смотрите | Да | Да |
ResNet | Сверточные нейронные сети ResNet-50 и ResNet-101. Для предварительно обученных моделей ResNet смотрите | Да | Да |
SegNet | Мультикласс pixelwise сеть сегментации. Для получения дополнительной информации смотрите | Нет | Да |
SqueezeNet | Маленький, глубокая нейронная сеть. Для предварительно обученных моделей ResNet смотрите | Да | Да |
VGG-16 | Сверточная нейронная сеть VGG-16. Для предварительно обученной модели VGG-16 смотрите | Да | Да |
VGG-19 | Сверточная нейронная сеть VGG-19. Для предварительно обученной модели VGG-19 смотрите | Да | Да |
Следующие слои поддерживаются для генерации кода 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 | Мудрый каналом локальный слой нормализации ответа | Да | Да |
Пользовательские выходные слои | Все выходные слои включая пользовательскую классификацию или регрессию выводят слои, созданные при помощи Для примера, показывающего, как задать пользовательскую классификацию выходной слой и задать функцию потерь, смотрите, Задают Пользовательскую Классификацию Выходной Слой (Deep Learning Toolbox). Для примера, показывающего, как задать пользовательскую регрессию выходной слой и задать функцию потерь, смотрите, Задают Пользовательскую Регрессию Выходной Слой (Deep Learning Toolbox). | Да | Да |
depthConcatenationLayer | Слой конкатенации глубины | Да | Да
|
dropoutLayer | Слой Dropout | Да | Да |
fullyConnectedLayer | Полносвязный слой | Да | Да |
globalAveragePooling2dLayer | Глобальный средний слой объединения для пространственных данных | Да | Да |
2D сгруппированный сверточный слой | Да
| Да | |
imageInputLayer | Отобразите входной слой
| Да | Да |
leakyReluLayer | Текучий слой Rectified Linear Unit (ReLU) | Да | Да |
maxPooling2dLayer | Слой объединения Max | Да | Да |
maxUnpooling2dLayer | Слой необъединения Max | Нет | Да |
pixelClassificationLayer | Создайте слой классификации пикселей для семантической сегментации | Да | Да |
regressionLayer | Создайте регрессию выходной слой | Да | Да |
reluLayer | Слой Rectified Linear Unit (ReLU) | Да | Да |
softmaxLayer | Слой Softmax | Да | Да
|
| Сглаживает активации в 1D C-стиль принятия (упорядоченный по строкам) порядок | Да | Да |
nnet.keras.layer.GlobalAveragePooling2dLayer | Глобальный средний слой объединения для пространственных данных | Да | Да |
| Сигмоидальный слой активации | Да | Да |
| Гиперболический слой активации касательной | Да | Да |
| Нулевой дополнительный слой для 2D входа | Да | Да |
nnet.onnx.layer.ElementwiseAffineLayer | Слой, который выполняет поэлементное масштабирование входа, сопровождаемого сложением | Да | Да |
| Сгладьте слой для сети ONNX™ | Да | Да |
nnet.onnx.layer.IdentityLayer | Слой, который реализует единичный оператор ONNX. | Да | Да |
Гиперболическая касательная (tanh) слой | Да | Да | |
Транспонированный 2D слой свертки Генерация кода не поддерживает асимметричную обрезку входа. Например, задавая векторный | Да | Да | |
| Выведите слой для сети обнаружения объектов YOLO v2 | Да | Да |
| Слой Reorganization для сети обнаружения объектов YOLO v2 | Да | Да |
| Преобразуйте слой для сети обнаружения объектов YOLO v2 | Да | Да |
Сгенерированный код для 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 |
---|---|---|---|
| Да | Да |