主要内容

importKerasLayers

从Keras网络导入层

描述

例子

= importKerasLayers (modelfile从一个模型文件中导入TensorFlow™-Keras网络的各个层。该函数返回HDF5 (.h5)或JSON (. json)由文件名给出的文件modelfile

此函数需要深度学习工具箱™TensorFlow模型转换器万博1manbetx支持包。如果没有安装此支万博1manbetx持包,则该函数将提供下载链接。

例子

= importKerasLayers (modelfile名称,值通过一个或多个名称-值对参数指定的附加选项,从TensorFlow-Keras网络导入层。

例如,importKerasLayers (modelfile ImportWeights,真的)从模型文件导入网络层和权重modelfile

例子

全部折叠

下载并安装TensorFlow模型的深度学习工具箱转换器支持包。万博1manbetx

类型importKerasLayers在命令行。

importKerasLayers

如果没有安装用于TensorFlow模型的深度学习工具箱转换器支持包,则该函数将在Add-On资源管理器中提供到所需支持包万博1manbetx的链接。要安装支持包,请单击链接,然后万博1manbetx单击安装.通过从模型文件导入图层,检查安装是否成功“digitsDAGnet.h5”在命令行。如果安装了所需的支持包,则函数返万博1manbetx回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'}

绘制网络架构图。

情节(层)

图中包含一个轴对象。axis对象包含一个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'}

加载数据集以训练分类器识别新数字。

文件夹= fullfile(toolboxdir(“nnet”),“nndemos”“nndatasets”“DigitDataset”);imds = imageDatastore(文件夹,...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”);

将数据集划分为训练集和测试集。

numTrainFiles = 750;[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainFiles,“随机”);

设置培训选项。

选项= trainingOptions(“个”...“MaxEpochs”10...“InitialLearnRate”, 0.001);

使用训练数据训练网络。

net = trainNetwork(imdsTrain,layers,options);
单CPU训练。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是15.62% | | 31.6977 | 0.0010 | | 1 | 50 | 00:00:07 | 63.28% | 1.2109 | 0.0010 | | 100 | | 00:00:16 | 85.16% | 0.4123 | 0.0010 | | 3 | 150 | 00:00:22 | | 0.1757 | 0.0010 95.31%||4 | 200 | 00:00:26 | 99.22% | 0.0450 | 0.0010 | | 5 | 250 | 00:00:31 | 100.00% | 0.0367 | 0.0010 | | 6 | 300 | 00:00:36 | 96.88% | 0.1210 | 0.0010 | | 7 | 350 | 00:00:41 | 100.00% | 0.0086 | 0.0010 | | 7 | 400 | 00:00:45 | 100.00% | 0.0166 | 0.0010 | | 8 | 450 | 00:00:50 | 100.00% | 0.0097 | 0.0010 | | 9 | 500 | 00:00:56 | 100.00% | 0.0047 | 0.0010 | | 10 | 550 | 00:01:02 | 100.00% | 0.0031 | 0.0010 | | 10 | 580 | 00:01:06 | 100.00% | 0.0060 | 0.0010 | |========================================================================================| Training finished: Max epochs completed.

在未用于训练网络的测试集上运行训练好的网络,并预测图像标签(数字)。

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

计算精度。

精度= sum(YPred == YTest)/numel(YTest)
准确度= 0.9852

指定要从中导入层和权重的网络文件。

modelfile =“digitsDAGnet.h5”

从指定的文件中导入网络体系结构和权重。要导入层权重,请指定“ImportWeights”真正的.该函数还从相同的HDF5文件中导入具有权重的层。

layers = importKerasLayers(模型文件,“ImportWeights”,真正的)
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;大小(重量)
ans =1×47 7 1 20

该函数导入了权重,因此层权重是非空的。

指定要从中导入层的网络文件和包含权重的文件。

modelfile =“digitsDAGnet.json”;重量=“digitsDAGnet.weights.h5”

从指定的文件中导入网络体系结构和权重。json文件不包括输出层。指定输出层,以便importKerasLayers在网络体系结构的末尾添加一个输出层。

layers = importKerasLayers(模型文件,...“ImportWeights”,真的,...“WeightFile”权重,...“OutputLayerType”“分类”
layers = LayerGraph with properties: layers: [13x1 nnet.cnn.layer.Layer] Connections: [13x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

这个示例展示了如何从预训练的Keras网络导入层,用自定义层替换不支持的层,并将这些层组装成一个网络,以便进行预测。万博1manbetx

导入Keras网络

从Keras网络模型导入层。美国的网络“digitsDAGnetwithnoise.h5”对数字图像进行分类。

文件名=“digitsDAGnetwithnoise.h5”;lgraph = importKerasLayers(文件名,“ImportWeights”,真正的);
警告:无法导入一些Keras层,因为深度学习工具箱不支持它们。万博1manbetx它们已被占位符层所取代。为了找到这些层,在返回的对象上调用findPlaceholderLayers函数。

Keras网络包含一些深度学习工具箱不支持的层。万博1manbetx的importKerasLayers函数显示警告并将不支持的层替换为占位符层。万博1manbetx

绘制层图使用情节

图表(lgraph)标题(“进口网络”

图中包含一个轴对象。标题为Imported Network的axes对象包含一个graphplot类型的对象。

替换占位符图层

要替换占位符层,首先确定要替换的层的名称。找到占位符层使用findPlaceholderLayers

placeholderLayers = findPlaceholderLayers(lgraph)
1' gaussian_noise_1' PLACEHOLDER LAYER 'GaussianNoise' Keras LAYER 2' gaussian_noise_2' PLACEHOLDER LAYER 'GaussianNoise' Keras层的占位符

显示这些层的Keras配置。

placeholderLayers。KerasConfiguration
ans =带字段的结构:可训练:1名:'gaussian_noise_1' stddev: 1.5000
ans =带字段的结构:可训练:1名:'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 =替换层(lgraph,“gaussian_noise_1”, gnLayer1);lgraph =替换层(lgraph,“gaussian_noise_2”, gnLayer2);

绘制更新后的图层图情节

图表(lgraph)标题(“替换层的网络”

图中包含一个轴对象。标题为Network with replace Layers的axes对象包含一个graphplot类型的对象。

指定类名

如果导入的分类层不包含类,则必须在预测之前指定这些类。如果您没有指定类,那么软件将自动将类设置为12、……N,在那里N是类的数量。

属性来查找分类层的索引层图的属性。

lgraph。层
ans = 15x1带有图层的图层数组:1“input_1”28 x28x1图像输入图像2 conv2d_1的二维卷积20 7 x7x1旋转步[1]和填充“相同”3“conv2d_1_relu”ReLU ReLU 4“conv2d_2”二维卷积20 3 x3x1旋转步[1]和填充“相同”5“conv2d_2_relu”ReLU ReLU 6 new_gaussian_noise_1高斯噪声的高斯噪声标准差为1.5 7 new_gaussian_noise_2高斯噪声的高斯噪声标准差为0.7 8“max_pooling2d_1”二维最大池2 x2马克斯池与步伐[2 2] and padding 'same' 9 'max_pooling2d_2' 2-D 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”.查看分类层,检查财产。

cLayer = lgraph.Layers(end)
cLayer = ClassificationOutputLayer与属性:名称:'ClassificationLayer_activation_1'类:'auto' ClassWeights: 'none' OutputSize: 'auto'超参数LossFunction: 'crossentropyex'

因为层的属性为“汽车”时,必须手动指定类。将类设置为01、……9,然后将导入的分类层替换为新的分类层。

粘土。class = string(0:9)
cLayer = ClassificationOutputLayer与属性:名称:'ClassificationLayer_activation_1'类:[0 1 2 3 4 5 6 7 8 9]ClassWeights: 'none' OutputSize: 10超参数LossFunction: 'crossentropyex'
lgraph =替换层(lgraph,“ClassificationLayer_activation_1”、粘土);

组装网络

使用组合图层图assembleNetwork.函数返回一个DAGNetwork对象,该对象已准备用于预测。

net =汇编网络(lgraph)
net = DAGNetwork with properties: Layers: [15x1 nnet.cnn.layer.Layer] Connections: [15x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

从具有参数校正线性单元(PReLU)层的Keras网络导入层。

PReLU层执行阈值操作,其中对于每个通道,任何小于零的输入值都乘以一个标量。PReLU操作由

f x x 如果 x > 0 一个 x 如果 x 0

在哪里 x 输入是非线性激活吗 f 频道 , 一个 是控制负部分斜率的缩放参数。下标 一个 表示该参数可以是一个矢量,并且非线性激活可以在不同的通道上变化。

importKerasNetwork而且importKerasLayers可以导入包含PReLU层的网络。这些函数同时支持标量值和矢量值缩万博1manbetx放参数。如果缩放参数是一个向量,则函数用向量元素的平均值替换该向量。您可以在导入后修改PReLU层以具有矢量值缩放参数。

指定要导入的网络文件。

modelfile =“digitsDAGnetwithPReLU.h5”

digitsDAGnetwithPReLU包括两个PReLU层。一个有一个标量值的缩放参数,另一个有一个矢量值的缩放参数。

导入网络体系结构和权重modelfile

layers = importKerasLayers(模型文件,“ImportWeights”,真正的);
警告:“p_re_lu_1”层是一个PReLU层,参数为向量值。该函数将参数替换为向量元素的平均值。您可以在导入后将参数更改为向量。

importKerasLayers函数显示PReLu层的警告p_re_lu_1.的向量值缩放参数p_re_lu_1用向量元素的平均值。您可以将参数更改为向量。首先,查看PReLU层的索引财产。

层。层
ans = 13x1带有图层的图层数组:1“input_1”28 x28x1图像输入图像2 conv2d_1的二维卷积20 7 x7x1旋转步[1]和填充“相同”3“conv2d_2”二维卷积20 x3x1旋转步[1]和填充“相同”4“p_re_lu_1”PReLU PReLU层5‘p_re_lu_2 PReLU PReLU层6“max_pooling2d_1”二维最大池2 x2马克斯池与步幅[2 2]和填充“相同”7“max_pooling2d_2”二维最大池2 x2马克斯池步(2 - 2)和填充“相同”8 flatten_1 Keras压平压平假设C-style (row-major) order 9 ' flat_2 ' Keras Flatten将激活Flatten成1-D假设C-style (row-major) order 10 'concatenate_1'深度连接2个输入的深度连接11 'dense_1'全连接10全连接层12 'dense_1_softmax' Softmax Softmax 13 'ClassificationLayer_dense_1'分类输出crossentropyex

有两个PReLU层。提取第四层p_re_lu_1,它最初为通道维度提供了一个向量值缩放参数。

tempLayer = layers.Layers
tempLayer = PreluLayer with properties: Name: 'p_re_lu_1' RawAlpha: [20x1 single] learable Parameters Alpha: 0.0044 State Parameters无属性。显示所有属性

RawAlpha属性包含向量值缩放参数,而α属性包含一个标量,该标量是向量值的元素平均值。重塑RawAlpha将向量值放在第三维,这对应于通道维度。然后,取代α通过重塑RawAlpha值。

tempLayer。α=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无属性。显示所有属性

取代p_re_lu_1tempLayer

图层=替换图层(图层,“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无属性。显示所有属性

现在,p_re_lu_1层有一个矢量值缩放参数。

输入参数

全部折叠

包含网络体系结构的模型文件的名称,可能还包括权重,指定为字符向量或字符串标量。该文件必须在当前文件夹中,在MATLAB的文件夹中®路径,或者必须包含文件的完整路径或相对路径。

如果modelfile包括

  • 网络结构和权重,那么它必须在HDF5 (.h5)的格式。

  • 只有网络架构,那么它可以在HDF5或JSON (. json)的格式。

如果modelfile方法只包含网络体系结构,然后可以选择地提供权重“ImportWeights”而且“WeightFile”名称-值对参数。如果您提供权重,则权重文件必须是HDF5格式。

例子:“digitsnet.h5”

数据类型:字符|字符串

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:importKerasLayers (modelfile“OutputLayerType”、“分类”)从模型文件导入网络层modelfile并在Keras层的末尾添加了一个用于分类问题的输出层。

时函数附加到导入网络体系结构末尾的输出层类型modelfile没有指定损失函数,指定为“分类”“回归”,或“pixelclassification”.附加一个pixelClassificationLayer(计算机视觉工具箱)对象需要计算机视觉工具箱™。

如果一个网络modelfile有多个输出,则不能使用此参数指定输出层类型。importKerasLayers为输出插入占位符层。导入后,您可以通过使用查找并替换占位符层findPlaceholderLayers而且replaceLayer,分别。

例子:“OutputLayerType”、“回归”

输入图像的大小为网络,指定为两个或三个矢量对应的数值(高度、宽度)对于灰度图像和(高度、宽度、渠道)分别用于彩色图像。网络使用此信息时modelfile不指定输入大小。

如果一个网络modelfile有多个输入,则不能使用此参数指定输入大小。importKerasLayers为输入插入占位符层。导入后,您可以通过使用查找并替换占位符层findPlaceholderLayers而且replaceLayer,分别。

例子:“ImageInputSize”,[28 28]

指示器导入权重和网络体系结构,指定为任意一种真正的

  • 如果“ImportWeights”真正的而且modelfile包括权重importKerasLayersmodelfile,它必须有HDF5 (.h5)的格式。

  • 如果“ImportWeights”真正的而且modelfile不包括权重,则必须指定包含权重的单独文件,使用“WeightFile”名称-值对参数。

例子:“ImportWeights”,真的

数据类型:逻辑

权重文件名,当从该文件名导入权重时modelfile不包括作为字符向量或字符串标量指定的权重。要使用此名称-值对参数,还必须设置“ImportWeights”真正的

权重文件必须在当前文件夹中,在MATLAB路径下的文件夹中,或者必须包含文件的完整或相对路径。

例子:“WeightFile”、“weights.h5”

数据类型:字符|字符串

输出参数

全部折叠

网络体系结构,返回为当Keras网络为type时,数组对象顺序,或返回为LayerGraph当Keras网络为type时,对象模型

限制

  • importKerasLayers万博1manbetx支持以下TensorFlow-Keras版本:

    • 该函数完全支持TensorFlow-K万博1manbetxeras 2.2.4版本。

    • 该函数对TensorFlow-Keras 2.2.5到2万博1manbetx.4.0版本提供有限的支持。

更多关于

全部折叠

万博1manbetx支持的Keras层

importKerasLayers万博1manbetx支持以下TensorFlow-Keras层类型转换为内置的MATLAB层,但有一些限制。

TensorFlow-Keras层 对应的深度学习工具箱层
添加 additionLayer

激活,激活名称:

  • elu

  • gelu

  • 线性整流函数(Rectified Linear Unit)

  • 线性

  • softmax

  • 乙状结肠

  • 搞同性恋的

  • 双曲正切

层:

先进的激活:

  • ELU

  • Softmax

  • 线性整流函数(Rectified Linear Unit)

  • LeakyReLU

  • PReLu

层:

AveragePooling1D averagePooling1dLayerPaddingValue指定为“的意思是”
AveragePooling2D averagePooling2dLayerPaddingValue指定为“的意思是”
BatchNormalization batchNormalizationLayer
双向(LSTM (__)) bilstmLayer
连接 depthConcatenationLayer
Conv1D convolution1dLayer
Conv2D convolution2dLayer
Conv2DTranspose transposedConv2dLayer
CuDNNGRU gruLayer
CuDNNLSTM lstmLayer
密集的 fullyConnectedLayer
DepthwiseConv2D groupedConvolution2dLayer
辍学 dropoutLayer
嵌入 wordEmbeddingLayer(文本分析工具箱)
nnet.keras.layer.FlattenCStyleLayer
GlobalAveragePooling1D globalAveragePooling1dLayer
GlobalAveragePooling2D globalAveragePooling2dLayer
GlobalMaxPool1D globalMaxPooling1dLayer
GlobalMaxPool2D globalMaxPooling2dLayer
格勒乌 gruLayer
输入 imageInputLayersequenceInputLayer,或featureInputLayer
LSTM lstmLayer
MaxPool1D maxPooling1dLayer
MaxPool2D maxPooling2dLayer
multiplicationLayer
SeparableConv2D groupedConvolution2dLayerconvolution2dLayer
TimeDistributed sequenceFoldingLayer在包裹层之前,和sequenceUnfoldingLayer在包裹层之后
UpSampling2D resize2dLayer(图像处理工具箱)
UpSampling3D resize3dLayer(图像处理工具箱)
ZeroPadding1D nnet.keras.layer.ZeroPadding1DLayer
ZeroPadding2D nnet.keras.layer.ZeroPadding2DLayer

*对于PReLU层,importKerasLayers将向量值的缩放参数替换为向量元素的平均值。您可以在导入后将参数更改为向量。有关示例,请参见导入Keras PReLU图层

万博1manbetx支持的Keras损失函数

importKerasLayers万博1manbetx支持以下Keras损失函数:

  • mean_squared_error

  • categorical_crossentropy

  • sparse_categorical_crossentropy

  • binary_crossentropy

为导入的网络架构生成代码

你可以使用MATLAB编码器™或GPU Coder™与深度学习工具箱一起生成MEX,独立CPU, CUDA®MEX,或用于导入网络的独立CUDA代码。有关更多信息,请参见深度学习代码生成

  • 使用MATLAB编码器使用深度学习工具箱生成在桌面或嵌入式目标上运行的MEX或独立CPU代码。您可以部署生成的使用Intel的独立代码®MKL-DNN库或ARM®计算库。或者,您也可以生成不调用第三方库函数的通用C或c++代码。有关更多信息,请参见深度学习与MATLAB编码器(MATLAB编码器)

  • 使用GPU编码器与深度学习工具箱生成CUDA MEX或独立CUDA代码运行在桌面或嵌入式目标。您可以部署生成的独立CUDA代码,使用CUDA深度神经网络库(cuDNN)、TensorRT™高性能推断库或用于Mali GPU的ARM计算库。有关更多信息,请参见GPU编码器的深度学习(GPU编码器)

importKerasLayers返回网络架构作为一个LayerGraph对象。对于代码生成,必须首先转换导入的LayerGraph对象添加到网络。把一个LayerGraph对象的DAGNetworkSeriesNetwork对象,使用assembleNetwork.把一个LayerGraph对象的dlnetwork对象,使用dlnetwork.欲知更多有关MATLAB编码器和GPU编码器对深度学习工具万博1manbetx箱对象的支持,请参见万博1manbetx支持类(MATLAB编码器)而且万博1manbetx支持类(GPU编码器),分别。

您可以为任何导入的层支持代码生成的网络生成代码。万博1manbetx获取支持使用的代码生成的层的列表万博1manbetxMATLAB编码器和GPU Coder,参见万博1manbetx支持层(MATLAB编码器)而且万博1manbetx支持层(GPU编码器),分别。有关每个内置MATLAB层的代码生成功能和限制的更多信息,请参阅该层的扩展功能部分。例如,请参见代码生成而且GPU代码生成imageInputLayer

在GPU上使用导入网络层

importKerasLayers不会在GPU上执行。然而,importKerasLayers导入深度学习预训练神经网络的层数组或LayerGraph对象,你可以在GPU上使用。

  • 将导入的图层转换为aDAGNetwork对象,使用assembleNetwork.在DAGNetwork对象,然后您可以通过使用预测CPU或GPU上的类标签分类.使用name-value参数指定硬件需求ExecutionEnvironment.对于具有多个输出的网络,使用预测函数并指定名称-值参数ReturnCategorical作为真正的

  • 将导入的图层转换为adlnetwork对象,使用dlnetwork.在dlnetwork对象,然后您可以通过使用预测CPU或GPU上的类标签预测.这个函数预测如果输入数据或网络参数存储在GPU上,则在GPU上执行。

    • 如果你使用minibatchqueue要处理和管理输入数据的小批,可以使用minibatchqueue如果GPU可用,对象默认将输出转换为GPU数组。

    • 使用dlupdate转换a的可学习参数dlnetwork对象到GPU数组。

      net = dlupdate(@gpuArray,net)

  • 可以在CPU或GPU上训练导入的层trainNetwork.若要指定培训选项,包括用于执行环境的选项,请使用trainingOptions函数。使用name-value参数指定硬件需求ExecutionEnvironment.有关如何加速训练的更多信息,请参见并行、gpu和云中扩展深度学习

使用GPU需要并行计算工具箱™和受支持的GPU设备。万博1manbetx有关受支持设备的信息,请参见万博1manbetxGPU计算要求(并行计算工具箱)

提示

  • 如果网络中包含一层TensorFlow模型的深度学习工具箱转换器不支持(参见万博1manbetx万博1manbetx支持的Keras层),然后importKerasLayers在不受支持的层中插入一个占位符层。万博1manbetx要查找网络中不支持的层的名称和索引,请使用万博1manbetxfindPlaceholderLayers函数。然后,您可以将占位符层替换为您定义的新层。要替换一个图层,请使用replaceLayer

  • 您可以用您定义的新层替换占位符层。

  • 您可以导入具有多输入多输出(MIMO)的Keras网络。使用importKerasNetwork如果网络包含输入的输入大小信息和输出的损失信息。否则,使用importKerasLayers.的importKerasLayers函数为输入和输出插入占位符层。导入后,您可以通过使用查找并替换占位符层findPlaceholderLayers而且replaceLayer,分别。导入MIMO Keras网络的流程与导入MIMO ONNX™网络的流程相同。有关示例,请参见导入和组装多输出ONNX网络.要了解具有多个输入和多个输出的深度学习网络,请参见多输入多输出网络

  • 要使用预训练的网络对新图像进行预测或迁移学习,您必须以与用于训练导入模型的图像预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小、减去图像平均值以及将图像从BGR格式转换为RGB格式。

    • 要调整图像大小,请使用imresize.例如,[3] 227227年imresize(图片)

    • 要将图像从RGB格式转换为BGR格式,请使用翻转.例如,翻转(图片3)

    有关用于训练和预测的图像预处理的更多信息,请参见用于深度学习的图像预处理

  • MATLAB使用基于1的索引,而Python®使用从零开始的索引。换句话说,在MATLAB和Python中,数组中的第一个元素的索引分别为1和0。有关MATLAB索引的更多信息,请参见数组索引.在MATLAB中,要使用一个索引数组(印第安纳州),将数组转换为印第安纳州+ 1

  • 有关更多技巧,请参见从TensorFlow, PyTorch和ONNX导入模型的技巧

选择功能

  • 使用importKerasNetworkimportKerasLayers导入HDF5或JSON格式的TensorFlow-Keras网络。如果TensorFlow网络是保存的模型格式,请使用importTensorFlowNetworkimportTensorFlowLayers

  • 如果你导入了一个自定义的TensorFlow-Keras层,或者如果软件不能将TensorFlow-Keras层转换成等效的内置MATLAB层,你可以使用importTensorFlowNetworkimportTensorFlowLayers,它们试图生成一个自定义层。例如,importTensorFlowNetwork而且importTensorFlowLayers当你导入TensorFlow-Keras时,生成一个自定义层λ层。

参考文献

[1]Keras: Python深度学习库https://keras.io

版本历史

在R2017b中引入