importKerasNetwork

Импортируйте предварительно обученную сеть Keras и веса

Синтаксис

net = importKerasNetwork(modelfile)
net = importKerasNetwork(modelfile,Name,Value)

Описание

пример

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

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

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

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

Примеры

свернуть все

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

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

importKerasNetwork

Если Средство импорта Deep Learning Toolbox для пакета поддержки Моделей TensorFlow-Keras не установлено, то функция обеспечивает ссылку на необходимый пакет поддержки в Add-On Explorer. Чтобы установить пакет поддержки, щелкните по ссылке, и затем нажмите Install. Проверяйте, что установка успешна путем импорта сети из образцового файла '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: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

Задайте файл, чтобы импортировать. 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: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

Постройте сетевую архитектуру.

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

Задайте сеть и файлы веса, чтобы импортировать.

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: [13×1 nnet.cnn.layer.Layer]
    Connections: [13×2 table]

Задайте образцовый файл.

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);

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

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

Входные параметры

свернуть все

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

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

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

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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™.

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

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

Пример: '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 может импортировать сеть со следующими типами слоя Keras с некоторыми ограничениями. Если сеть содержит какой-либо другой тип слоя, то программное обеспечение возвращает сообщение об ошибке. Чтобы импортировать только сетевую архитектуру и веса, используйте функцию importKerasLayers.

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

    Слой KerasСлой Deep Learning Toolbox
    AddadditionLayer

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

    • 'relu'

    • 'linear'

    • 'softmax'

    • 'sigmoid'

    • 'tanh'

    Слои:

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

    • Softmax

    • ReLU

    • LeakyReLU

    Слои:

    AveragePooling2DaveragePooling2dLayer
    BatchNormalizationbatchNormalizationLayer
    Bidirectional(LSTM(__))bilstmLayer
    ConcatenatedepthConcatenationLayer
    Conv2Dconvolution2dLayer
    Conv2DTransposetransposedConv2dLayer
    DepthwiseConv2DgroupedConvolution2dLayer
    DensefullyConnectedLayer
    DropoutdropoutLayer
    EmbeddingwordEmbeddingLayer (Text Analytics Toolbox™)
    Flattennnet.keras.layer.FlattenCStyleLayer
    GlobalAveragePooling2Dnnet.keras.layer.GlobalAveragePooling2DLayer
    InputimageInputLayer
    LeakyReLUleakyReluLayer
    LSTMlstmLayer
    MaxPooling2DmaxPooling2dLayer
    SeparableConv2DgroupedConvolution2dLayer и convolution2dLayer
    ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

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

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

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

    • Чтобы изменить размер изображений, используйте imresize. Например, imresize(im,[227 227]).

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

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

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

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

Не рекомендуемый запуск в R2018b

Ссылки

[1] Keras: библиотека Python Deep Learning. https://keras.io.

Введенный в R2017b