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 Models.

Тип importKerasNetwork в командной строке.

importKerasNetwork

Если пакет поддержки Deep Learning Toolbox Converter для 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) требуется Computer Vision Toolbox™.

Если сеть в 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Соответствующий слой набора Deep Learning Toolbox
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 (Symbolic Math Toolbox)
Flattennnet.keras.layer.FlattenCStyleLayer
GlobalAveragePooling2DglobalAveragePooling2dLayer
GlobalMaxPooling2DglobalMaxPooling2dLayer
GRUgruLayer
InputimageInputLayer, sequenceInputLayer, или featureInputLayer
LSTMlstmLayer
MaxPooling2DmaxPooling2dLayer
MultiplymultiplicationLayer
SeparableConv2DgroupedConvolution2dLayer или convolution2dLayer
TimeDistributedsequenceFoldingLayer перед обернутым слоем и sequenceUnfoldingLayer после обернутого слоя
UpSampling2Dresize2dLayer(Набор Image Processing Toolbox)
UpSampling3Dresize3dLayer(Набор Image Processing Toolbox)
ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

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

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

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

  • mean_squared_error

  • categorical_crossentropy

  • sparse_categorical_crossentropy

  • binary_crossentropy

Совет

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

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

  • Чтобы использовать предварительно обученную сеть для предсказания или передачи обучения на новых изображениях, необходимо предварительно обработать изображения так же, как были предварительно обработаны изображения, которые использовались для обучения импортированной модели. Наиболее распространенными этапами предварительной обработки являются изменение размера изображений, вычитание средних значений изображений и преобразование изображений из 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 Deep Learning. https://keras.io.

Введенный в R2017b