importTensorFlowLayers

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

    Описание

    пример

    lgraph = importTensorFlowLayers(modelFolder) возвращает слои сети TensorFlow™ от папки modelFolder, который содержит модель в сохраненном формате модели (совместимый только с TensorFlow 2). Функция может импортировать сети TensorFlow, созданные с последовательным или функциональным API TensorFlow-Keras. importTensorFlowLayers импортирует слои, заданные в saved_model.pb файл и изученные веса содержатся в variables подпапка, и возвращает lgraph как LayerGraph объект.

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

    Примечание

    importTensorFlowLayers попытки сгенерировать пользовательский слой, когда вы импортируете пользовательский слой TensorFlow или когда программное обеспечение не может преобразовать слой TensorFlow в эквивалентный встроенный MATLAB® слой. Для списка слоев, для которых программное обеспечение поддерживает преобразование, см. Слои TensorFlow-Keras, Поддержанные для Преобразования на Встроенные Слои MATLAB.

    importTensorFlowLayers сохраняет сгенерированные пользовательские слои и связанные операторы TensorFlow в пакете +modelFolder.

    importTensorFlowLayers автоматически не генерирует пользовательский слой для каждого слоя TensorFlow, который не поддерживается для преобразования на встроенный слой MATLAB. Для получения дополнительной информации о том, как обработать неподдерживаемые слои, смотрите Советы.

    пример

    lgraph = importTensorFlowLayers(modelFolder,Name,Value) импортирует слои и веса от сети TensorFlow с дополнительными опциями, заданными одними или несколькими аргументами name-value. Например, 'OutputLayerType','classification' добавляет классификацию выходной слой в конец импортированной сетевой архитектуры.

    Примеры

    свернуть все

    Импортируйте предварительно обученную сеть TensorFlow в сохраненном формате модели как LayerGraph объект. Затем соберите импортированные слои в DAGNetwork объект и использование собранная сеть, чтобы классифицировать изображение.

    Задайте папку модели.

    if ~exist('digitsDAGnet','dir')
        unzip('digitsDAGnet.zip')
    end
    modelFolder = './digitsDAGnet';

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

    classNames = {'0','1','2','3','4','5','6','7','8','9'};

    Импортируйте слои и веса сети TensorFlow в сохраненном формате модели. По умолчанию, importTensorFlowLayers импортирует сеть как LayerGraph объект, совместимый с DAGNetwork объект. Задайте выходной тип слоя для проблемы классификации изображений.

    lgraph = importTensorFlowLayers(modelFolder,'OutputLayerType','classification')
    Importing the saved model...
    Translating the model, this may take a few minutes...
    Finished translation.
    
    lgraph = 
      LayerGraph with properties:
    
             Layers: [13×1 nnet.cnn.layer.Layer]
        Connections: [13×2 table]
         InputNames: {'input_1'}
        OutputNames: {'ClassificationLayer_activation_1'}
    
    

    Отобразите последний слой импортированной сети. Выход показывает тот importTensorFlowLayers добавляет ClassificationOutputLayer в конец сетевой архитектуры.

    lgraph.Layers(end)
    ans = 
      ClassificationOutputLayer with properties:
    
                Name: 'ClassificationLayer_activation_1'
             Classes: 'auto'
        ClassWeights: 'none'
          OutputSize: 'auto'
    
       Hyperparameters
        LossFunction: 'crossentropyex'
    
    

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

    Слой классификации имеет имя 'ClassificationLayer_activation_1'. Установите классы на classNames и затем замените импортированный слой классификации на новый.

    cLayer = lgraph.Layers(end);
    cLayer.Classes = classNames;
    lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',cLayer);

    Соберите график слоев с помощью assembleNetwork возвратить DAGNetwork объект.

    net = assembleNetwork(lgraph)
    net = 
      DAGNetwork with properties:
    
             Layers: [13×1 nnet.cnn.layer.Layer]
        Connections: [13×2 table]
         InputNames: {'input_1'}
        OutputNames: {'ClassificationLayer_activation_1'}
    
    

    Считайте изображение, которое вы хотите классифицировать.

    digitDatasetPath = fullfile(toolboxdir('nnet'),'nndemos','nndatasets','DigitDataset');
    I = imread(fullfile(digitDatasetPath,'5','image4009.png'));

    Классифицируйте изображение с помощью импортированной сети.

    label = classify(net,I);

    Отобразите изображение и результат классификации.

    imshow(I)
    title(['Classification result ' classNames{label}])

    Импортируйте предварительно обученную сеть TensorFlow в сохраненном формате модели как LayerGraph объект, совместимый с dlnetwork объект. Затем преобразуйте LayerGraph возразите против dlnetwork классифицировать изображение.

    Задайте папку модели.

    if ~exist('digitsDAGnet','dir')
        unzip('digitsDAGnet.zip')
    end
    modelFolder = './digitsDAGnet';

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

    classNames = {'0','1','2','3','4','5','6','7','8','9'};

    Импортируйте сеть TensorFlow как слои, совместимые с dlnetwork объект.

    lgraph = importTensorFlowLayers(modelFolder,'TargetNetwork','dlnetwork')
    Importing the saved model...
    Translating the model, this may take a few minutes...
    Finished translation.
    
    lgraph = 
      LayerGraph with properties:
    
             Layers: [12×1 nnet.cnn.layer.Layer]
        Connections: [12×2 table]
         InputNames: {'input_1'}
        OutputNames: {1×0 cell}
    
    

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

    digitDatasetPath = fullfile(toolboxdir('nnet'),'nndemos','nndatasets','DigitDataset');
    I = imread(fullfile(digitDatasetPath,'5','image4009.png'));
    size(I)
    ans = 1×2
    
        28    28
    
    

    Преобразуйте импортированный график слоев в dlnetwork объект.

    dlnet = dlnetwork(lgraph);

    Отобразите входной размер сети. В этом случае размер изображения совпадает с сетевым входным размером. Если они не соответствуют, необходимо изменить размер изображения при помощи imresize(I, netInputSize(1:2)).

    dlnet.Layers(1).InputSize
    ans = 1×3
    
        28    28     1
    
    

    Преобразуйте изображение в dlarray. Отформатируйте изображения с размерностями 'SSCB' (пространственный, пространственный, канал, пакет). В этом примере пакетный размер равняется 1, и можно не использовать его ('SSC').

    I_dlarray = dlarray(single(I),'SSCB');

    Классифицируйте демонстрационное изображение и найдите предсказанную метку.

    prob = predict(dlnet,I_dlarray);
    [~,label] = max(prob);

    Отобразите изображение и результат классификации.

    imshow(I)
    title(['Classification result ' classNames{label}])

    Импортируйте предварительно обученную сеть TensorFlow в сохраненном формате модели как LayerGraph объект. Затем соберите импортированные слои в DAGNetwork объект. Импортированная сеть содержит слои, которые не поддерживаются для преобразования на встроенные слои MATLAB. Программное обеспечение автоматически генерирует пользовательские слои, когда вы импортируете эти слои.

    Этот пример использует функцию помощника findCustomLayers. Чтобы просмотреть код для этой функции, смотрите Функцию Помощника.

    Задайте папку модели.

    if ~exist('digitsDAGnetwithnoise','dir')
        unzip('digitsDAGnetwithnoise.zip')
    end
    modelFolder = './digitsDAGnetwithnoise';

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

    classNames = {'0','1','2','3','4','5','6','7','8','9'};

    Импортируйте слои и веса сети TensorFlow в сохраненном формате модели. По умолчанию, importTensorFlowLayers импортирует сеть как LayerGraph объект, совместимый с DAGNetwork объект. Задайте выходной тип слоя для проблемы классификации изображений.

    lgraph = importTensorFlowLayers(modelFolder,'OutputLayerType','classification');
    Importing the saved model...
    Translating the model, this may take a few minutes...
    Finished translation.
    

    Если импортированная сеть содержит слои, не поддержанные для преобразования на встроенные слои MATLAB, то importTensorFlowLayers может автоматически сгенерировать пользовательские слои вместо этих слоев. importTensorFlowLayers сохраняет каждый сгенерированный пользовательский слой в отдельный .m файл в пакете +digitsDAGnetwithnoise в текущей папке.

    Найдите индексы автоматически сгенерированных пользовательских слоев, с помощью функции помощника findCustomLayers, и отобразите пользовательские слои.

    ind = findCustomLayers(lgraph.Layers,'+digitsDAGnetwithnoise');
    lgraph.Layers(ind)
    ans = 
      2×1 Layer array with layers:
    
         1   'gaussian_noise_1'   GaussianNoise   digitsDAGnetwithnoise.kGaussianNoise1Layer3766
         2   'gaussian_noise_2'   GaussianNoise   digitsDAGnetwithnoise.kGaussianNoise2Layer3791
    

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

    Слой классификации имеет имя 'ClassificationLayer_activation_1'. Установите классы на classNames и затем замените импортированный слой классификации на новый.

    cLayer = lgraph.Layers(end);
    cLayer.Classes = classNames;
    lgraph = replaceLayer(lgraph,'ClassificationLayer_activation_1',cLayer);

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

    net = assembleNetwork(lgraph)
    net = 
      DAGNetwork with properties:
    
             Layers: [15×1 nnet.cnn.layer.Layer]
        Connections: [15×2 table]
         InputNames: {'input_1'}
        OutputNames: {'ClassificationLayer_activation_1'}
    
    

    Функция помощника

    Этот раздел предоставляет код функции помощника findCustomLayers используемый в этом примере. findCustomLayers возвращает indices из пользовательских слоев, что importTensorFlowNetwork автоматически генерирует.

    function indices = findCustomLayers(layers,PackageName)
    
    s = what(['.\' PackageName]);
    
    indices = zeros(1,length(s.m));
    for i = 1:length(layers)
        for j = 1:length(s.m)
            if strcmpi(class(layers(i)),[PackageName(2:end) '.' s.m{j}(1:end-2)])
                indices(j) = i;
            end
        end
    end
    
    end

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

    свернуть все

    Имя папки, содержащей модель TensorFlow в виде вектора символов или строкового скаляра. modelFolder должен быть в текущей папке, или необходимо включать полный или относительный путь в папку. modelFolder должен содержать файл saved_model.pb, и подпапка variables. Это может также содержать подпапки assets и assets.extra.

    • Файл saved_model.pb содержит архитектуру графика слоев и опции обучения (например, оптимизатор, потери и метрики).

    • Подпапка variables содержит веса, изученные предварительно обученной сетью TensorFlow. По умолчанию, importTensorFlowLayers импортирует веса.

    • Подпапка assets содержит дополнительные файлы (например, словари), который может использовать график слоев. importTensorFlowLayers не импортирует файлы в assets.

    • Подпапка assets.extra содержит дополнительные файлы (например, информация для пользователей), которые сосуществуют с графиком слоев.

    Пример: 'MobileNet'

    Пример: './MobileNet'

    Аргументы name-value

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

    Пример: importTensorFlowLayers(modelFolder,'TargetNetwork','dagnetwork','OutputLayerType','classification') импортирует слоя сети и веса от modelFolder, сохраняет автоматически сгенерированные пользовательские слои в пакете +modelFolder в текущей папке, указывает, что импортированные слои совместимы с DAGNetwork объект, и добавляет классификацию выходной слой в конец импортированных слоев.

    Имя пакета, в который importTensorFlowLayers сохраняет пользовательские слои в виде вектора символов или строкового скаляра. importTensorFlowLayers сохраняет пользовательский пакет слоев +PackageName в текущей папке. Если вы не задаете 'PackageName'то importTensorFlowLayers сохраняет пользовательские слои в пакете, названном +modelFolder в текущей папке. Для получения дополнительной информации о пакетах смотрите, что Пакеты Создают Пространства имен.

    importTensorFlowLayers попытки сгенерировать пользовательский слой, когда вы импортируете пользовательский слой TensorFlow или когда программное обеспечение не может преобразовать слой TensorFlow на эквивалентный встроенный слой MATLAB. importTensorFlowLayers сохраняет каждый сгенерированный пользовательский слой в отдельный .m файл в +PackageName. Чтобы просмотреть или отредактировать пользовательский слой, откройте связанный .m файл. Для получения дополнительной информации о пользовательских слоях смотрите Глубокое обучение Пользовательские Слои.

    Пакет +PackageName может также содержать подпакет +ops. Этот подпакет содержит соответствие функций MATLAB операторам TensorFlow (см. Поддерживаемые Операторы TensorFlow), которые используются в автоматически сгенерированных пользовательских слоях. importTensorFlowLayers сохраняет связанную функцию MATLAB для каждого оператора в отдельном .m файл в подпакете +ops. Объектные функции dlnetwork, такой как predict функция, используйте эти операторы при взаимодействии с пользовательскими слоями.

    Пример: 'PackageName','MobileNet'

    Пример: 'PackageName','CustomLayers'

    Целевой тип сети Deep Learning Toolbox для импортированной сетевой архитектуры в виде 'dagnetwork' или 'dlnetwork'.

    • Если вы задаете 'TargetNetwork' как 'dagnetwork', импортированная сетевая архитектура совместима с DAGNetwork объект. В этом случае, импортированный lgraph должен включать выходной слой, заданный TensorFlow сохраненная функция потерь модели или аргумент 'OutputLayerType' значения имени.

    • Если вы задаете 'TargetNetwork' как 'dlnetwork', импортированная сетевая архитектура совместима с dlnetwork объект. В этом случае, импортированный lgraph не включает выходной слой.

    Пример: 'TargetNetwork','dlnetwork' импортирует LayerGraph объект, совместимый с dlnetwork объект.

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

    • Если вы задаете 'TargetNetwork' как 'dagnetwork' и сохраненная модель в modelFolder не задает функцию потерь, необходимо присвоить значение аргументу 'OutputLayerType' значения имени. DAGNetwork объект должен иметь выходной слой.

    • Если вы задаете 'TargetNetwork' как 'dlnetwork', importTensorFlowLayers игнорирует аргумент 'OutputLayerType' значения имени. dlnetwork объект не имеет выходного слоя.

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

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

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

    Индикатор, чтобы отобразить информацию о прогрессе импорта в командном окне в виде числового или логического 1 TRUE) или 0 ложь).

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

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

    свернуть все

    Сетевая архитектура, возвращенная как LayerGraph объект.

    Чтобы использовать импортированный график слоев для предсказания, необходимо преобразовать LayerGraph возразите против DAGNetwork или dlnetwork объект. Задайте аргумент 'TargetNetwork' значения имени как 'dagnetwork' или 'dlnetwork' в зависимости от намеченного рабочего процесса.

    • Преобразуйте LayerGraph к DAGNetwork при помощи assembleNetwork. На DAGNetwork объект, вы затем предсказываете метки класса с помощью classify функция.

    • Преобразуйте LayerGraph к dlnetwork при помощи dlnetwork. На dlnetwork объект, вы затем предсказываете метки класса с помощью predict функция. Задайте входные данные как dlarray с помощью правильного формата данных (для получения дополнительной информации, смотрите fmt аргумент dlarray).

    Ограничения

    • importTensorFlowLayers поддержки версии v2.0, v2.1, v.2.2 TensorFlow и v2.3.

    Больше о

    свернуть все

    Слои TensorFlow-Keras, поддержанные для преобразования на встроенные слои MATLAB

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

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

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

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

    Поддерживаемые операторы TensorFlow

    importTensorFlowLayers поддерживает следующие операторы TensorFlow для преобразования в функции MATLAB с dlarray поддержка.

    Оператор TensorFlowСоответствующая функция MATLAB
    AddtfAdd
    AddNtfAddN
    AddV2tfAdd
    AvgPooltfAvgPool
    BatchMatMulV2tfBatchMatMulV2
    BiasAddtfBiasAdd
    BroadcastTotfBroadcastTo
    CasttfCast
    ConcatV2tfCat
    ConstНи один (переведенный в веса в пользовательском слое)
    Conv2DtfConv2D
    DepthToSpacedepthToSpace (Image Processing Toolbox)
    DepthwiseConv2dNativetfDepthwiseConv2D
    Expexp
    FusedBatchNormV3tfBatchnorm
    GatherV2tfGather
    IdentityНи один (переведенный в присвоение значения в пользовательском слое)
    IdentityNtfIdentityN
    L2LosstfL2Loss
    LeakyReluleakyrelu
    Lesslt, <
    Loglog
    MatMultfMatMul
    MaxPooltfMaxPool
    MaximumtfMaximum
    MeantfMean
    MinimumtfMinimum
    MirrorPadtfMirrorPad
    MultfMul
    Negminus, -
    PacktfStack
    PadtfPad
    PadV2tfPad
    PartitionedCallНи один (переведенный, чтобы функционировать в пользовательских методах слоя)
    Powpower, .^
    ProdtfProd
    RandomStandardNormaltfRandomStandardNormal
    RangetfRange
    ReadVariableOpНи один (переведенный в присвоение значения в пользовательском слое)
    RealDivtfDiv
    Relurelu
    Relu6relu и min
    ReshapetfReshape
    ResizeNearestNeighbordlresize (Image Processing Toolbox)
    Rsqrtsqrt
    ShapetfShape
    Sigmoidsigmoid
    Softmaxsoftmax
    SpaceToDepthspaceToDepth (Image Processing Toolbox)
    Square.^2
    Sqrtsqrt
    SquaredDifferencetfMul или tfSub
    SqueezetfSqueeze
    StatefulPartitionedCallНи один (переведенный, чтобы функционировать в пользовательских методах слоя)
    StopGradienttfStopGradient
    StridedSlicetfStridedSlice или tfSqueeze
    SubtfSub
    Tanhtanh
    TiletfTile
    Transposepermute

    Для получения дополнительной информации о функциях, которые работают с dlarray объекты, см. Список Функций с Поддержкой dlarray.

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

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

    • Преобразуйте импортированный 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)

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

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

    Советы

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

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

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

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

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

    • Члены пакета +PackageName (пользовательские слои и операторы TensorFlow), не доступны, если родительская папка пакета не находится на пути MATLAB. Для получения дополнительной информации смотрите Пакеты и путь MATLAB.

    Альтернативная функциональность

    Использование importTensorFlowNetwork или importTensorFlowLayers импортировать сеть TensorFlow в сохраненном формате [2] модели. В качестве альтернативы, если сеть находится в HDF5 или формате JSON, использовать importKerasNetwork или importKerasLayers импортировать сеть.

    Ссылки

    [2] Используя формат SavedModel. https://www.tensorflow.org/guide/saved_model.

    Введенный в R2021a