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 Models.

Тип importKerasLayers в командной строке.

importKerasLayers

Если пакет поддержки Deep Learning Toolbox Converter для 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. The 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)={xiifxi>0aixiifxi0

где 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.

The 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

The 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) требуется Computer Vision Toolbox™.

Если сеть в 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Соответствующий слой набора Deep Learning Toolbox
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 (Symbolic Math Toolbox)
Flattennnet.keras.layer.FlattenCStyleLayer
GlobalAveragePooling2DglobalAveragePooling2dLayer
GlobalMaxPooling2DglobalMaxPooling2dLayer
GRUgruLayer
InputimageInputLayer, sequenceInputLayer, или featureInputLayer
LSTMlstmLayer
MaxPooling2DmaxPooling2dLayer
MultiplymultiplicationLayer
SeparableConv2DgroupedConvolution2dLayer или convolution2dLayer
TimeDistributedsequenceFoldingLayer перед обернутым слоем и sequenceUnfoldingLayer после обернутого слоя
UpSampling2Dresize2dLayer(Набор Image Processing Toolbox)
UpSampling3Dresize3dLayer(Набор Image Processing Toolbox)
ZeroPadding2Dnnet.keras.layer.ZeroPadding2DLayer

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

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

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

  • mean_squared_error

  • categorical_crossentropy

  • sparse_categorical_crossentropy

  • binary_crossentropy

Совет

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

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

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

  • Чтобы использовать предварительно обученную сеть для предсказания или передачи обучения на новых изображениях, необходимо предварительно обработать изображения так же, как были предварительно обработаны изображения, которые использовались для обучения импортированной модели. Наиболее распространенными этапами предварительной обработки являются изменение размера изображений, вычитание средних значений изображений и преобразование изображений из 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 Deep Learning. https://keras.io.

Введенный в R2017b