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: [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')

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

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

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

свернуть все

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

    Поддерживаемый слой KerasСоответствующий слой Deep Learning Toolbox
    AddadditionLayer

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

    • 'elu'

    • 'relu'

    • 'linear'

    • 'softmax'

    • 'sigmoid'

    • 'tanh'

    Слои:

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

    • ELU

    • Softmax

    • ReLU

    • LeakyReLU

    • PReLu*

    Слои:

    AveragePooling2DaveragePooling2dLayer
    BatchNormalizationbatchNormalizationLayer
    Bidirectional(LSTM(__))bilstmLayer
    ConcatenatedepthConcatenationLayer
    Conv2Dconvolution2dLayer
    Conv2DTransposetransposedConv2dLayer
    CuDNNLSTMlstmLayer
    DensefullyConnectedLayer
    DepthwiseConv2DgroupedConvolution2dLayer
    DropoutdropoutLayer
    EmbeddingwordEmbeddingLayer (Text Analytics Toolbox)
    Flattennnet.keras.layer.FlattenCStyleLayer
    GlobalAveragePooling2DglobalAveragePooling2dLayer
    GlobalMaxPooling2DglobalMaxPooling2dLayer
    GRUgruLayer
    InputimageInputLayer
    LSTMlstmLayer
    MaxPooling2DmaxPooling2dLayer
    MultiplymultiplicationLayer
    SeparableConv2DgroupedConvolution2dLayer или convolution2dLayer
    UpSampling2Dresize2dLayer (Image Processing Toolbox)
    UpSampling3Dresize3dLayer (Image Processing Toolbox)
    ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

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

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

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

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

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

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

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

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

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

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

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

Ссылки

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

Введенный в R2017b