exponenta event banner

importKerasLayers

Импорт слоев из сети Keras

Описание

пример

layers = importKerasLayers(modelfile) импортирует слои TensorFlow™-Keras сети из файла модели. Функция возвращает слои, определенные в HDF5 (.h5) или JSON (.json) файл, указанный именем файла modelfile.

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

пример

layers = importKerasLayers(modelfile,Name,Value) импортирует слои из сети TensorFlow-Keras с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение.

Например, importKerasLayers(modelfile,'ImportWeights',true) импортирует слои сети и веса из файла модели modelfile.

Примеры

свернуть все

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

Напечатать importKerasLayers в командной строке.

importKerasLayers

Если пакет поддержки Deep Learning Toolbox Converter for TensorFlow Models не установлен, то функция предоставляет ссылку на требуемый пакет поддержки в обозревателе Add-On Explorer. Чтобы установить пакет поддержки, щелкните ссылку и нажмите кнопку Установить. Убедитесь, что установка выполнена успешно, импортировав слои из файла модели. 'digitsDAGnet.h5' в командной строке. Если установлен необходимый пакет поддержки, функция возвращает LayerGraph объект.

modelfile = 'digitsDAGnet.h5';
net = importKerasLayers(modelfile)
net = 
  LayerGraph with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Импорт слоев сети из файла модели digitsDAGnet.h5.

modelfile = 'digitsDAGnet.h5';
layers = importKerasLayers(modelfile) 
layers = 
  LayerGraph with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Постройте график сетевой архитектуры.

plot(layers)

Figure contains an axes. The axes contains an object of type graphplot.

Укажите сетевой файл для импорта.

modelfile = 'digitsDAGnet.h5';

Импорт слоев сети.

layers = importKerasLayers(modelfile)
layers = 
  LayerGraph with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Загрузите набор данных для обучения классификатора распознаванию новых цифр.

folder = fullfile(toolboxdir('nnet'),'nndemos','nndatasets','DigitDataset');
imds = imageDatastore(folder, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

Разбейте набор данных на обучающие и тестовые наборы.

numTrainFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainFiles,'randomize');

Задайте параметры обучения.

options = trainingOptions('sgdm', ...
    'MaxEpochs',10, ...
    'InitialLearnRate',0.001);

Обучение сети с использованием данных обучения.

net = trainNetwork(imdsTrain,layers,options);
Training on single CPU.
|========================================================================================|
|  Epoch  |  Iteration  |  Time Elapsed  |  Mini-batch  |  Mini-batch  |  Base Learning  |
|         |             |   (hh:mm:ss)   |   Accuracy   |     Loss     |      Rate       |
|========================================================================================|
|       1 |           1 |       00:00:01 |       15.62% |      12.6982 |          0.0010 |
|       1 |          50 |       00:00:07 |       63.28% |       1.2109 |          0.0010 |
|       2 |         100 |       00:00:13 |       85.16% |       0.4193 |          0.0010 |
|       3 |         150 |       00:00:18 |       96.88% |       0.1749 |          0.0010 |
|       4 |         200 |       00:00:24 |       99.22% |       0.0456 |          0.0010 |
|       5 |         250 |       00:00:30 |      100.00% |       0.0373 |          0.0010 |
|       6 |         300 |       00:00:37 |       96.88% |       0.1223 |          0.0010 |
|       7 |         350 |       00:00:44 |      100.00% |       0.0087 |          0.0010 |
|       7 |         400 |       00:00:50 |      100.00% |       0.0166 |          0.0010 |
|       8 |         450 |       00:00:55 |      100.00% |       0.0098 |          0.0010 |
|       9 |         500 |       00:01:01 |      100.00% |       0.0047 |          0.0010 |
|      10 |         550 |       00:01:07 |      100.00% |       0.0031 |          0.0010 |
|      10 |         580 |       00:01:10 |      100.00% |       0.0059 |          0.0010 |
|========================================================================================|

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

YPred = classify(net,imdsTest);
YTest = imdsTest.Labels;

Рассчитайте точность.

accuracy = sum(YPred == YTest)/numel(YTest)
accuracy = 0.9856

Укажите сетевой файл для импорта слоев и весов.

modelfile = 'digitsDAGnet.h5';

Импортируйте сетевую архитектуру и веса из указанных файлов. Чтобы импортировать веса слоев, укажите 'ImportWeights' быть true. Функция также импортирует слои с их весами из того же файла HDF5.

layers = importKerasLayers(modelfile,'ImportWeights',true)
layers = 
  LayerGraph with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Просмотрите размер весов во втором слое.

weights = layers.Layers(2).Weights;
size(weights)
ans = 1×4

     7     7     1    20

Функция импортировала веса, поэтому веса слоев не являются пустыми.

Укажите сетевой файл для импорта слоев и файл, содержащий веса.

modelfile = 'digitsDAGnet.json';
weights = 'digitsDAGnet.weights.h5';

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

layers = importKerasLayers(modelfile, ...
    'ImportWeights',true, ...
    'WeightFile',weights, ...
    'OutputLayerType','classification')
layers = 
  LayerGraph with properties:

         Layers: [13x1 nnet.cnn.layer.Layer]
    Connections: [13x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

В этом примере показано, как импортировать слои из предварительно подготовленной сети Keras, заменить неподдерживаемые слои пользовательскими и собрать слои в сеть, готовую для прогнозирования.

Импорт сети Keras

Импортируйте слои из сетевой модели Keras. Сеть в 'digitsDAGnetwithnoise.h5' классифицирует изображения цифр.

filename = 'digitsDAGnetwithnoise.h5';
lgraph = importKerasLayers(filename,'ImportWeights',true);
Warning: Unable to import some Keras layers, because they are not supported by the Deep Learning Toolbox. They have been replaced by placeholder layers. To find these layers, call the function findPlaceholderLayers on the returned object.

Сеть Keras содержит некоторые слои, которые не поддерживаются Deep Learning Toolbox. importKerasLayers функция отображает предупреждение и заменяет неподдерживаемые слои слоями-местозаполнителями.

Печать графика слоев с помощью plot.

figure
plot(lgraph)
title("Imported Network")

Figure contains an axes. The axes with title Imported Network contains an object of type graphplot.

Заменить слои-заполнители

Чтобы заменить слои-заполнители, сначала определите имена слоев для замены. Поиск слоев-заполнителей с помощью findPlaceholderLayers.

placeholderLayers = findPlaceholderLayers(lgraph)
placeholderLayers = 
  2x1 PlaceholderLayer array with layers:

     1   'gaussian_noise_1'   PLACEHOLDER LAYER   Placeholder for 'GaussianNoise' Keras layer
     2   'gaussian_noise_2'   PLACEHOLDER LAYER   Placeholder for 'GaussianNoise' Keras layer

Отображение конфигураций Keras этих слоев.

placeholderLayers.KerasConfiguration
ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_1'
       stddev: 1.5000

ans = struct with fields:
    trainable: 1
         name: 'gaussian_noise_2'
       stddev: 0.7000

Определите пользовательский уровень гауссова шума. Чтобы создать этот слой, сохраните файл gaussianNoiseLayer.m в текущей папке. Затем создайте два уровня шума Гаусса с теми же конфигурациями, что и импортированные слои Keras.

gnLayer1 = gaussianNoiseLayer(1.5,'new_gaussian_noise_1');
gnLayer2 = gaussianNoiseLayer(0.7,'new_gaussian_noise_2');

Замена слоев-заполнителей пользовательскими слоями с помощью replaceLayer.

lgraph = replaceLayer(lgraph,'gaussian_noise_1',gnLayer1);
lgraph = replaceLayer(lgraph,'gaussian_noise_2',gnLayer2);

Печать обновленного графика слоев с помощью plot.

figure
plot(lgraph)
title("Network with Replaced Layers")

Figure contains an axes. The axes with title Network with Replaced Layers contains an object of type graphplot.

Указать имена классов

Если импортированный слой классификации не содержит классов, их необходимо указать до прогнозирования. Если классы не указаны, то программа автоматически устанавливает классы на 1, 2, ..., N, где N - количество классов.

Найдите индекс классификационного слоя, просмотрев Layers свойство графа слоев.

lgraph.Layers
ans = 
  15x1 Layer array with layers:

     1   'input_1'                            Image Input             28x28x1 images
     2   'conv2d_1'                           Convolution             20 7x7x1 convolutions with stride [1  1] and padding 'same'
     3   'conv2d_1_relu'                      ReLU                    ReLU
     4   'conv2d_2'                           Convolution             20 3x3x1 convolutions with stride [1  1] and padding 'same'
     5   'conv2d_2_relu'                      ReLU                    ReLU
     6   'new_gaussian_noise_1'               Gaussian Noise          Gaussian noise with standard deviation 1.5
     7   'new_gaussian_noise_2'               Gaussian Noise          Gaussian noise with standard deviation 0.7
     8   'max_pooling2d_1'                    Max Pooling             2x2 max pooling with stride [2  2] and padding 'same'
     9   'max_pooling2d_2'                    Max Pooling             2x2 max pooling with stride [2  2] and padding 'same'
    10   'flatten_1'                          Keras Flatten           Flatten activations into 1-D assuming C-style (row-major) order
    11   'flatten_2'                          Keras Flatten           Flatten activations into 1-D assuming C-style (row-major) order
    12   'concatenate_1'                      Depth concatenation     Depth concatenation of 2 inputs
    13   'dense_1'                            Fully Connected         10 fully connected layer
    14   'activation_1'                       Softmax                 softmax
    15   'ClassificationLayer_activation_1'   Classification Output   crossentropyex

Классификационный слой имеет имя 'ClassificationLayer_activation_1'. Просмотрите классификационный слой и проверьте Classes собственность.

cLayer = lgraph.Layers(end)
cLayer = 
  ClassificationOutputLayer with properties:

            Name: 'ClassificationLayer_activation_1'
         Classes: 'auto'
    ClassWeights: 'none'
      OutputSize: 'auto'

   Hyperparameters
    LossFunction: 'crossentropyex'

Потому что Classes свойство слоя 'auto', необходимо указать классы вручную. Установите классы в значение 0, 1, ..., 9, а затем замените импортированный классификационный слой новым.

cLayer.Classes = string(0:9)
cLayer = 
  ClassificationOutputLayer with properties:

            Name: 'ClassificationLayer_activation_1'
         Classes: [0    1    2    3    4    5    6    7    8    9]
    ClassWeights: 'none'
      OutputSize: 10

   Hyperparameters
    LossFunction: 'crossentropyex'

lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',cLayer);

Собрать сеть

Собрать график слоев с помощью assembleNetwork. Функция возвращает DAGNetwork объект, который готов к использованию для прогнозирования.

net = assembleNetwork(lgraph)
net = 
  DAGNetwork with properties:

         Layers: [15x1 nnet.cnn.layer.Layer]
    Connections: [15x2 table]
     InputNames: {'input_1'}
    OutputNames: {'ClassificationLayer_activation_1'}

Импорт слоев из сети Keras, имеющей слои параметрических выпрямленных линейных единиц (PReLU).

Уровень PReLU выполняет пороговую операцию, где для каждого канала любое входное значение, меньшее нуля, умножается на скаляр. Операция PReLU задается

f (xi) = {xif xi > 0aixiif xi≤0

где xi - вход нелинейной активации f на канале i, а ai - параметр масштабирования, управляющий наклоном отрицательной части. Подстрочный индекс i на ai указывает, что параметр может быть вектором, и нелинейная активация может изменяться на разных каналах.

importKerasNetwork и importKerasLayers может импортировать сеть, включающую уровни PReLU. Эти функции поддерживают как скалярные, так и векторные параметры масштабирования. Если параметр масштабирования является вектором, то функции заменяют вектор средним значением элементов вектора. Слой PReLU можно изменить таким образом, чтобы после импорта он имел параметр масштабирования с векторными значениями.

Укажите сетевой файл для импорта.

modelfile = 'digitsDAGnetwithPReLU.h5';

digitsDAGnetwithPReLU включает в себя два уровня PReLU. Один имеет параметр масштабирования со скалярным значением, а другой - параметр масштабирования с векторным значением.

Импорт сетевой архитектуры и весов из modelfile.

layers = importKerasLayers(modelfile,'ImportWeights',true);
Warning: Layer 'p_re_lu_1' is a PReLU layer with a vector-valued parameter. The function replaces the parameter with the average of the vector elements. You can change the parameter back to a vector after import.

importKerasLayers функция отображает предупреждение для уровня PReLu p_re_lu_1. Функция заменяет параметр масштабирования с векторным значением p_re_lu_1 со средним значением векторных элементов. Можно изменить параметр обратно на вектор. Сначала найдите индекс уровня PReLU, просмотрев Layers собственность.

layers.Layers
ans = 
  13x1 Layer array with layers:

     1   'input_1'                       Image Input             28x28x1 images
     2   'conv2d_1'                      Convolution             20 7x7x1 convolutions with stride [1  1] and padding 'same'
     3   'conv2d_2'                      Convolution             20 3x3x1 convolutions with stride [1  1] and padding 'same'
     4   'p_re_lu_1'                     PReLU                   PReLU layer
     5   'p_re_lu_2'                     PReLU                   PReLU layer
     6   'max_pooling2d_1'               Max Pooling             2x2 max pooling with stride [2  2] and padding 'same'
     7   'max_pooling2d_2'               Max Pooling             2x2 max pooling with stride [2  2] and padding 'same'
     8   'flatten_1'                     Keras Flatten           Flatten activations into 1-D assuming C-style (row-major) order
     9   'flatten_2'                     Keras Flatten           Flatten activations into 1-D assuming C-style (row-major) order
    10   'concatenate_1'                 Depth concatenation     Depth concatenation of 2 inputs
    11   'dense_1'                       Fully Connected         10 fully connected layer
    12   'dense_1_softmax'               Softmax                 softmax
    13   'ClassificationLayer_dense_1'   Classification Output   crossentropyex

layers имеет два уровня PReLU. Извлечь четвертый слой p_re_lu_1, который первоначально имел параметр масштабирования с векторным значением для измерения канала.

tempLayer = layers.Layers(4)
tempLayer = 
  PreluLayer with properties:

        Name: 'p_re_lu_1'
    RawAlpha: [20x1 single]

   Learnable Parameters
       Alpha: 0.0044

  Show all properties

RawAlpha содержит параметр масштабирования с векторным значением и Alpha содержит скаляр, являющийся средним значением элемента для векторных значений. Измениться RawAlpha для размещения векторных значений в третьем измерении, соответствующем размеру канала. Затем замените Alpha с измененной формой RawAlpha значения.

tempLayer.Alpha = reshape(tempLayer.RawAlpha,[1,1,numel(tempLayer.RawAlpha)])
tempLayer = 
  PreluLayer with properties:

        Name: 'p_re_lu_1'
    RawAlpha: [20x1 single]

   Learnable Parameters
       Alpha: [1x1x20 single]

  Show all properties

Замените p_re_lu_1 слой в layers с tempLayer.

layers = replaceLayer(layers,'p_re_lu_1', tempLayer);
layers.Layers(4)
ans = 
  PreluLayer with properties:

        Name: 'p_re_lu_1'
    RawAlpha: [20x1 single]

   Learnable Parameters
       Alpha: [1x1x20 single]

  Show all properties

Теперь p_re_lu_1 слой имеет параметр масштабирования с векторными значениями.

Входные аргументы

свернуть все

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

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

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

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

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

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

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: importKerasLayers(modelfile,'OutputLayerType','classification') импортирует сетевые слои из файла модели modelfile и добавляет выходной слой для проблемы классификации в конце слоев Keras.

Тип выходного уровня, который функция добавляет к концу импортированной сетевой архитектуры, когда modelfile не указывает функцию потерь, указанную как 'classification', 'regression', или 'pixelclassification'. Добавление pixelClassificationLayer Для объекта (Computer Vision Toolbox) требуется Toolbox™ Computer Vision.

Если сеть в modelfile имеет несколько выходов, поэтому с помощью этого аргумента нельзя указать типы выходных слоев. importKerasLayers вставляет слои-заполнители для выходных данных. После импорта можно найти и заменить слои-заполнители с помощью findPlaceholderLayers и replaceLayerсоответственно.

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

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

Если сеть в modelfile имеет несколько входных данных, поэтому с помощью этого аргумента нельзя задать размеры входных данных. importKerasLayers вставляет слои-заполнители для входных данных. После импорта можно найти и заменить слои-заполнители с помощью findPlaceholderLayers и replaceLayerсоответственно.

Пример: 'ImageInputSize',[28 28]

Индикатор для импорта весов, а также сетевой архитектуры, указанный как false или true.

  • Если 'ImportWeights' является true и modelfile включает веса, затем importKerasLayers импортирует веса из modelfile, который должен иметь HDF5 (.h5) формат.

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

Пример: 'ImportWeights',true

Типы данных: logical

Имя файла весов, из которого требуется импортировать веса modelfile не включает веса, указанные как символьный вектор или строковый скаляр. Чтобы использовать этот аргумент пары имя-значение, необходимо также задать 'ImportWeights' кому true.

Файл весов должен находиться в текущей папке, в папке на пути MATLAB или должен содержать полный или относительный путь к файлу.

Пример: 'WeightFile','weights.h5'

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

Выходные аргументы

свернуть все

Сетевая архитектура, возвращенная как Layer объект массива, если сеть Keras имеет тип Sequential, или возвращено как LayerGraph объект, если сеть Keras имеет тип Model.

Ограничения

  • importKerasLayers поддерживает следующие версии TensorFlow-Keras:

    • Функция полностью поддерживает версии TensorFlow-Keras до 2.2.4.

    • Функция предлагает ограниченную поддержку версий TensorFlow-Keras, 2,2,5 для 2,4,0.

Подробнее

свернуть все

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

importKerasLayers поддерживает следующие типы слоев TensorFlow-Keras для преобразования во встроенные слои MATLAB с некоторыми ограничениями.

Слой TensorFlow-KerasСоответствующий слой набора инструментов для глубокого обучения
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(Панель инструментов для анализа текста)
Flattennnet.keras.layer.FlattenCStyleLayer
GlobalAveragePooling2DglobalAveragePooling2dLayer
GlobalMaxPooling2DglobalMaxPooling2dLayer
GRUgruLayer
InputimageInputLayer, sequenceInputLayer, или featureInputLayer
LSTMlstmLayer
MaxPooling2DmaxPooling2dLayer
MultiplymultiplicationLayer
SeparableConv2DgroupedConvolution2dLayer или convolution2dLayer
TimeDistributedsequenceFoldingLayer перед обернутым слоем, и sequenceUnfoldingLayer после обернутого слоя
UpSampling2Dresize2dLayer(Панель инструментов обработки изображений)
UpSampling3Dresize3dLayer(Панель инструментов обработки изображений)
ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

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

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

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

  • mean_squared_error

  • categorical_crossentropy

  • sparse_categorical_crossentropy

  • binary_crossentropy

Совет

  • Если сеть содержит слой, который не поддерживает конвертер Deep Learning Toolbox для моделей TensorFlow (см. Поддерживаемые слои Keras), то importKerasLayers вставляет слой-заполнитель вместо неподдерживаемого слоя. Чтобы найти имена и индексы неподдерживаемых слоев в сети, используйте findPlaceholderLayers функция. Затем можно заменить слой-местозаполнитель новым слоем, определенным пользователем. Для замены слоя используйте replaceLayer.

  • Слой-заполнитель можно заменить новым слоем, который определяется пользователем.

  • Можно импортировать сеть 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.

Ссылки

[1] Keras: Библиотека глубокого обучения Python. https://keras.io.

Представлен в R2017b