importKerasNetwork

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

Описание

пример

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

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

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

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

Примеры

свернуть все

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

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

importKerasNetwork

Если Конвертер Deep Learning Toolbox для пакета поддержки Моделей TensorFlow не установлен, то функция обеспечивает ссылку на необходимый пакет поддержки в 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')

Figure contains an axes object. The axes object 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 object. The axes object 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 имя аргумента и 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*

Слои:

AveragePooling1DaveragePooling1dLayer с PaddingValue заданный как 'mean'
AveragePooling2DaveragePooling2dLayer с PaddingValue заданный как 'mean'
BatchNormalizationbatchNormalizationLayer
Bidirectional(LSTM(__))bilstmLayer
ConcatenatedepthConcatenationLayer
Conv1Dconvolution1dLayer
Conv2Dconvolution2dLayer
Conv2DTransposetransposedConv2dLayer
CuDNNGRUgruLayer
CuDNNLSTMlstmLayer
DensefullyConnectedLayer
DepthwiseConv2DgroupedConvolution2dLayer
DropoutdropoutLayer
EmbeddingwordEmbeddingLayer (Text Analytics Toolbox)
Flattennnet.keras.layer.FlattenCStyleLayer
GlobalAveragePooling1DglobalAveragePooling1dLayer
GlobalAveragePooling2DglobalAveragePooling2dLayer
GlobalMaxPool1DglobalMaxPooling1dLayer
GlobalMaxPool2DglobalMaxPooling2dLayer
GRUgruLayer
InputimageInputLayer, sequenceInputLayer, или featureInputLayer
LSTMlstmLayer
MaxPool1DmaxPooling1dLayer
MaxPool2DmaxPooling2dLayer
MultiplymultiplicationLayer
SeparableConv2DgroupedConvolution2dLayer или convolution2dLayer
TimeDistributedsequenceFoldingLayer перед перенесенным слоем и sequenceUnfoldingLayer после перенесенного слоя
UpSampling2Dresize2dLayer (Image Processing Toolbox)
UpSampling3Dresize3dLayer (Image Processing Toolbox)
ZeroPadding1Dnnet.keras.layer.ZeroPadding1DLayer
ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

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

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

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

  • mean_squared_error

  • categorical_crossentropy

  • sparse_categorical_crossentropy

  • binary_crossentropy

Используйте импортированную сеть на графическом процессоре

importKerasNetwork не выполняется на графическом процессоре. Однако importKerasNetwork импортирует предварительно обученную нейронную сеть для глубокого обучения как DAGNetwork или SeriesNetwork объект, который можно использовать на графическом процессоре.

  • Можно сделать предсказания с импортированной сетью или на центральном процессоре или на графическом процессоре при помощи classify. Задайте требования к аппаратным средствам с помощью аргумента ExecutionEnvironment значения имени. Для сетей с несколькими выходными параметрами используйте predict функция.

  • Можно сделать предсказания с импортированной сетью или на центральном процессоре или на графическом процессоре при помощи predict. Задайте требования к аппаратным средствам с помощью аргумента ExecutionEnvironment значения имени. Если сеть имеет несколько выходных параметров, задайте аргумент ReturnCategorical значения имени как true.

  • Можно обучить импортированную сеть или на центральном процессоре или на графическом процессоре при помощи trainNetwork. Задавать опции обучения, включая опции для среды выполнения, использование trainingOptions функция. Задайте требования к аппаратным средствам с помощью аргумента ExecutionEnvironment значения имени. Для получения дополнительной информации о том, как ускорить обучение, смотрите, Увеличивают Глубокое обучение параллельно, на графических процессорах, и в Облаке.

Используя графический процессор требует Parallel Computing Toolbox™ и поддерживаемого устройства графического процессора. Для получения информации о поддерживаемых устройствах смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox).

Советы

  • Если сеть содержит слой, который не поддерживает Конвертер 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.

  • Если вы импортируете пользовательский слой TensorFlow-Keras или если программное обеспечение не может преобразовать слой TensorFlow-Keras на эквивалентный встроенный слой MATLAB, можно использовать importTensorFlowNetwork или importTensorFlowLayers, которые пытаются сгенерировать пользовательский слой. Например, importTensorFlowNetwork и importTensorFlowLayers сгенерируйте пользовательский слой, когда вы импортируете TensorFlow-Keras Lambda слой.

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

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

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

Ссылки

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

Введенный в R2017b