importKerasLayers

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

Описание

пример

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

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

пример

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

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

Примеры

свернуть все

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

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

importKerasLayers

Если Конвертер Deep Learning Toolbox для пакета поддержки Моделей TensorFlow не установлен, то функция обеспечивает ссылку на необходимый пакет поддержки в Add-On Explorer. Чтобы установить пакет поддержки, щелкните по ссылке, и затем нажмите Install. Проверяйте, что установка успешна путем импорта слоев из файла модели '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 object. The axes object 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:00 |       15.62% |      12.6982 |          0.0010 |
|       1 |          50 |       00:00:06 |       63.28% |       1.2108 |          0.0010 |
|       2 |         100 |       00:00:11 |       85.16% |       0.4183 |          0.0010 |
|       3 |         150 |       00:00:16 |       96.09% |       0.1757 |          0.0010 |
|       4 |         200 |       00:00:21 |       99.22% |       0.0451 |          0.0010 |
|       5 |         250 |       00:00:26 |      100.00% |       0.0370 |          0.0010 |
|       6 |         300 |       00:00:31 |       96.88% |       0.1223 |          0.0010 |
|       7 |         350 |       00:00:36 |      100.00% |       0.0086 |          0.0010 |
|       7 |         400 |       00:00:41 |      100.00% |       0.0166 |          0.0010 |
|       8 |         450 |       00:00:45 |      100.00% |       0.0097 |          0.0010 |
|       9 |         500 |       00:00:50 |      100.00% |       0.0047 |          0.0010 |
|      10 |         550 |       00:00:55 |      100.00% |       0.0031 |          0.0010 |
|      10 |         580 |       00:00:57 |      100.00% |       0.0060 |          0.0010 |
|========================================================================================|
Training finished: Max epochs completed.

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

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

Вычислите точность.

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

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

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 object. The axes object 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 object. The axes object with title Network with Replaced Layers contains an object of type graphplot.

Задайте имена классов

Если импортированный слой классификации не содержит классы, то необходимо задать их перед предсказанием. Если вы не задаете классы, то программное обеспечение автоматически устанавливает классы на 1, 2N, где 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 \in 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

   State Parameters
    No properties.

  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]

   State Parameters
    No properties.

  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]

   State Parameters
    No properties.

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

Типы данных: логический

Имя файла веса, из которого можно импортировать веса когда 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*

Слои:

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, importKerasLayers заменяет масштабный коэффициент с векторным знаком на среднее значение векторных элементов. Можно возвратить параметр к вектору после импорта. Для примера смотрите Импорт Слой Keras PReLU.

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

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

  • mean_squared_error

  • categorical_crossentropy

  • sparse_categorical_crossentropy

  • binary_crossentropy

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

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

  • Преобразуйте импортированные слои в DAGNetwork объект при помощи assembleNetwork. На DAGNetwork объект, можно затем предсказать, что класс маркирует или на CPU или на GPU при помощи classify. Задайте требования к аппаратным средствам с помощью аргумента ExecutionEnvironment значения имени. Для сетей с несколькими выходными параметрами используйте predict функционируйте и задайте аргумент ReturnCategorical значения имени как true.

  • Преобразуйте импортированный LayerGraph возразите против dlnetwork объект при помощи dlnetwork. На dlnetwork объект, можно затем предсказать, что класс маркирует или на CPU или на GPU при помощи predict. Функция predict выполняется на графическом процессоре, если или входные данные или сетевые параметры хранятся на графическом процессоре.

    • Если вы используете minibatchqueue обработать и управлять мини-пакетами входных данных, minibatchqueue объект преобразует выход в массив графического процессора по умолчанию, если графический процессор доступен.

    • Использование dlupdate преобразовывать настраиваемые параметры dlnetwork возразите против массивов графического процессора.

      dlnet = dlupdate(@gpuarray,dlnet)

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

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

Советы

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

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

Ссылки

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

Введенный в R2017b