exponenta event banner

importKerasNetwork

Импорт предварительно подготовленных сетей и весов Keras

Описание

пример

net = importKerasNetwork(modelfile) импортирует предварительно подготовленную сеть TensorFlow™-Keras и ее веса из modelfile.

Для этой функции требуется пакет поддержки Deep Learning Toolbox™ Converter для моделей TensorFlow. Если этот пакет поддержки не установлен, функция предоставляет ссылку для загрузки.

net = importKerasNetwork(modelfile,Name,Value) импортирует предварительно подготовленную сеть TensorFlow-Keras и ее веса с дополнительными опциями, заданными одним или несколькими аргументами пары имя-значение.

Например, importKerasNetwork(modelfile,'WeightFile',weights) импортирует сеть из файла модели modelfile и веса из файла весов weights. В этом случае modelfile может иметь формат HDF5 или JSON, а файл весов должен иметь формат HDF5.

Примеры

свернуть все

Загрузите и установите пакет поддержки Deep Learning Toolbox Converter для моделей TensorFlow.

Напечатать importKerasNetwork в командной строке.

importKerasNetwork

Если пакет поддержки Deep Learning Toolbox Converter for TensorFlow Models не установлен, то функция предоставляет ссылку на требуемый пакет поддержки в обозревателе Add-On Explorer. Чтобы установить пакет поддержки, щелкните ссылку и нажмите кнопку Установить. Убедитесь, что установка выполнена успешно, импортировав сеть из файла модели 'digitsDAGnet.h5' в командной строке. Если установлен необходимый пакет поддержки, функция возвращает DAGNetwork объект.

modelfile = 'digitsDAGnet.h5';
net = importKerasNetwork(modelfile)
Warning: Saved Keras networks do not include classes. Classes will be set to categorical(1:N), where N is the number of classes in the classification output layer of the network.  To specify classes, use the 'Classes' argument.
net = 
  DAGNetwork with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Укажите файл для импорта. Файл digitsDAGnet.h5 содержит направленную ациклическую сверточную нейронную сеть графов, классифицирующую изображения цифр.

modelfile = 'digitsDAGnet.h5';

Импортируйте сеть.

net = importKerasNetwork(modelfile)
Warning: Saved Keras networks do not include classes. Classes will be set to categorical(1:N), where N is the number of classes in the classification output layer of the network.  To specify classes, use the 'Classes' argument.
net = 
  DAGNetwork with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Постройте график сетевой архитектуры.

plot(net)
title('DAG Network Architecture')

Figure contains an axes. The axes with title DAG Network Architecture contains an object of type graphplot.

Укажите сеть и файлы весов для импорта.

modelfile = 'digitsDAGnet.json';
weights = 'digitsDAGnet.weights.h5';

Это направленная ациклическая сверточная нейронная сеть графов, обученная данным цифр.

Импортируйте сетевую архитектуру и весовые коэффициенты из отдельных файлов. Файл .json не имеет уровня вывода или информации о функции затрат. Укажите тип выходного слоя при импорте файлов.

net = importKerasNetwork(modelfile,'WeightFile',weights, ...
      'OutputLayerType','classification')
Warning: Saved Keras networks do not include classes. Classes will be set to categorical(1:N), where N is the number of classes in the classification output layer of the network.  To specify classes, use the 'Classes' argument.
net = 
  DAGNetwork with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Укажите файл модели.

modelfile = 'digitsDAGnet.h5';

Укажите имена классов.

classNames = {'0','1','2','3','4','5','6','7','8','9'};

Импортируйте сеть Keras с именами классов.

net = importKerasNetwork(modelfile,'Classes',classNames);

Прочтите изображение для классификации.

digitDatasetPath = fullfile(toolboxdir('nnet'),'nndemos','nndatasets','DigitDataset');
I = imread(fullfile(digitDatasetPath,'5','image4009.png'));

Классифицируйте изображение с помощью предварительно подготовленной сети.

label = classify(net,I);

Отображение изображения и результата классификации.

imshow(I)
title(['Classification result: ' char(label)])

Figure contains an axes. The axes with title Classification result: 5 contains an object of type image.

Входные аргументы

свернуть все

Имя файла модели, содержащего архитектуру сети и, возможно, веса, указанные как вектор символов или строковый скаляр. Файл должен находиться в текущей папке, в папке по пути MATLAB ®, либо необходимо указать полный или относительный путь к файлу.

Если modelfile включает

  • Сетевая архитектура и веса, то она должна быть в HDF5 (.h5) формат.

  • Только архитектура сети, то она может быть в HDF5 или JSON (.json) формат.

Если modelfile включает только сетевую архитектуру, затем необходимо указать веса в файле HDF5, используя 'WeightFile' аргумент пары имя-значение.

Пример: 'digitsnet.h5'

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: importKerasNetwork(modelfile,'OutputLayerType','classification','Classes',classes) импортирует сеть из файла модели modelfile, добавляет выходной слой для проблемы классификации в конце слоев Keras и задает classes в качестве классов выходного уровня.

Имя файла, содержащего веса, указанное как символьный вектор или строковый скаляр. WeightFile должен находиться в текущей папке, в папке на пути MATLAB, либо необходимо указать полный или относительный путь к файлу.

Пример: 'WeightFile','weights.h5'

Тип выходного уровня, который функция добавляет к концу импортированной сетевой архитектуры, когда modelfile не указывает функцию потерь, указанную как 'classification', 'regression', или 'pixelclassification'. Добавление pixelClassificationLayer Для объекта (Computer Vision Toolbox) требуется Toolbox™ Computer Vision.

Если сеть в modelfile имеет несколько выходов, поэтому с помощью этого аргумента нельзя указать типы выходных слоев. Использовать importKerasLayers вместо этого. importKerasLayers вставляет слои-заполнители для выходных данных. После импорта можно найти и заменить слои-заполнители с помощью findPlaceholderLayers и replaceLayerсоответственно.

Пример: 'OutputLayerType','regression'

Размер входных изображений для сети, определяемый как вектор из двух или трех числовых значений, соответствующих [height,width] для изображений в градациях серого и [height,width,channels] для цветных изображений соответственно. Сеть использует эту информацию, когда modelfile не указывает размер ввода.

Если сеть в modelfile имеет несколько входных данных, поэтому с помощью этого аргумента нельзя задать размеры входных данных. Использовать importKerasLayers вместо этого. importKerasLayers вставляет слои-заполнители для входных данных. После импорта можно найти и заменить слои-заполнители с помощью findPlaceholderLayers и replaceLayerсоответственно.

Пример: 'ImageInputSize',[28 28]

Классы выходного слоя, указанные как категориальный вектор, строковый массив, массив ячеек символьных векторов или 'auto'. Если указан строковый массив или массив ячеек символьных векторов str, то программное обеспечение устанавливает классы выходного уровня в categorical(str,str). Если Classes является 'auto', то функция устанавливает классы в categorical(1:N), где N - количество классов.

Типы данных: char | categorical | string | cell

Выходные аргументы

свернуть все

Предварительно обученная сеть Keras, возвращенная как одна из следующих:

  • Если сеть Keras имеет тип Sequential, то net является SeriesNetwork объект.

  • Если сеть Keras имеет тип Model, то net является DAGNetwork объект.

Ограничения

  • importKerasNetwork поддерживает следующие версии TensorFlow-Keras:

    • Функция полностью поддерживает версии TensorFlow-Keras до 2.2.4.

    • Функция предлагает ограниченную поддержку версий TensorFlow-Keras, 2,2,5 для 2,4,0.

Подробнее

свернуть все

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

importKerasNetwork поддерживает следующие типы слоев TensorFlow-Keras для преобразования во встроенные слои MATLAB с некоторыми ограничениями.

Слой TensorFlow-KerasСоответствующий слой набора инструментов для глубокого обучения
AddadditionLayer

Activation, с именами активации:

  • 'elu'

  • 'relu'

  • 'linear'

  • 'softmax'

  • 'sigmoid'

  • 'swish'

  • 'tanh'

Слои:

Расширенные активации:

  • ELU

  • Softmax

  • ReLU

  • LeakyReLU

  • PReLu*

Слои:

AveragePooling2DaveragePooling2dLayer с PaddingValue указано как 'mean'
BatchNormalizationbatchNormalizationLayer
Bidirectional(LSTM(__))bilstmLayer
ConcatenatedepthConcatenationLayer
Conv2Dconvolution2dLayer
Conv2DTransposetransposedConv2dLayer
CuDNNGRUgruLayer
CuDNNLSTMlstmLayer
DensefullyConnectedLayer
DepthwiseConv2DgroupedConvolution2dLayer
DropoutdropoutLayer
EmbeddingwordEmbeddingLayer(Панель инструментов для анализа текста)
Flattennnet.keras.layer.FlattenCStyleLayer
GlobalAveragePooling2DglobalAveragePooling2dLayer
GlobalMaxPooling2DglobalMaxPooling2dLayer
GRUgruLayer
InputimageInputLayer, sequenceInputLayer, или featureInputLayer
LSTMlstmLayer
MaxPooling2DmaxPooling2dLayer
MultiplymultiplicationLayer
SeparableConv2DgroupedConvolution2dLayer или convolution2dLayer
TimeDistributedsequenceFoldingLayer перед обернутым слоем, и sequenceUnfoldingLayer после обернутого слоя
UpSampling2Dresize2dLayer(Панель инструментов обработки изображений)
UpSampling3Dresize3dLayer(Панель инструментов обработки изображений)
ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

* Для уровня PReLU, importKerasNetwork заменяет параметр масштабирования с векторными значениями на среднее значение векторных элементов. После импорта параметр можно изменить на вектор. Пример см. в разделе Импорт слоя Keras PReLU.

Поддерживаемые функции потери Keras

importKerasNetwork поддерживает следующие функции потери Keras:

  • mean_squared_error

  • categorical_crossentropy

  • sparse_categorical_crossentropy

  • binary_crossentropy

Совет

  • Если сеть содержит слой, который не поддерживает конвертер Deep Learning Toolbox для моделей TensorFlow (см. Поддерживаемые слои Keras), то importKerasNetwork возвращает сообщение об ошибке. В этом случае по-прежнему можно использовать importKerasLayers для импорта сетевой архитектуры и весов.

  • Можно импортировать сеть Keras с несколькими входами и несколькими выходами (MIMO). Использовать importKerasNetwork если сеть включает в себя информацию о размере входных данных для входных данных и информацию о потерях для выходных данных. В противном случае используйте importKerasLayers. importKerasLayers функция вставляет слои-заполнители для входов и выходов. После импорта можно найти и заменить слои-заполнители с помощью findPlaceholderLayers и replaceLayerсоответственно. Рабочий процесс импорта сетей MIMO Keras совпадает с рабочим процессом импорта сетей MIMO ONNX™. Пример см. в разделе Импорт и сборка сети ONNX с несколькими выходами. Сведения о сети глубокого обучения с несколькими входами и несколькими выходами см. в разделе Сети с несколькими входами и несколькими выходами.

  • Чтобы использовать предварительно обученную сеть для прогнозирования или переноса обучения на новых изображениях, необходимо предварительно обработать изображения таким же образом, как и изображения, использованные для обучения импортированной модели. Наиболее распространенными этапами предварительной обработки являются изменение размеров изображений, вычитание средних значений изображений и преобразование изображений из изображений BGR в RGB.

    • Для изменения размеров изображений используйте imresize. Например, imresize(image,[227,227,3]).

    • Чтобы преобразовать изображения из формата RGB в формат BGR, используйте flip. Например, flip(image,3).

    Дополнительные сведения о предварительной обработке изображений для обучения и прогнозирования см. в разделе Предварительная обработка изображений для глубокого обучения.

Альтернативная функциональность

Использовать importKerasNetwork или importKerasLayers для импорта сети TensorFlow-Keras в формате HDF5 или JSON. Если сеть TensorFlow имеет сохраненный формат модели, используйте importTensorFlowNetwork или importTensorFlowLayers.

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2018b

Ссылки

[1] Keras: Библиотека глубокого обучения Python. https://keras.io.

Представлен в R2017b