importKerasNetwork

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

Описание

пример

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 имя аргумента и 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.cnn.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