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

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

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

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

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

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

ДаДа
GoogLeNet

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

ДаДа
Начало-v3Начало-v3 сверточная нейронная сеть. Для предварительно обученной модели Начала-v3 смотрите inceptionv3.ДаДа
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

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

ДаДа
depthConcatenationLayer

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

ДаДа
dropoutLayer

Слой Dropout

ДаДа
fullyConnectedLayer

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

ДаДа
imageInputLayer

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

ДаДа
leakyReluLayer

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

ДаДа
maxPooling2dLayer

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

ДаДа
maxUnpooling2dLayer

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

НетДа
pixelClassificationLayer

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

ДаДа
regressionLayer

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

ДаДа
reluLayer

Слой Rectified Linear Unit (ReLU)

ДаДа
softmaxLayer

Слой Softmax

Да

Да

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

transposedConv2dLayer

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

НетДа
nnet.keras.layer.GlobalAveragePooling2dLayer

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

ДаДа

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

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

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

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

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

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

Похожие темы