主要内容

importKerasNetwork

导入预训练的Keras网络和权重

描述

例子

= importKerasNetwork (modelfile导入预先训练好的TensorFlow™-Keras网络及其权重modelfile

此函数需要深度学习工具箱™TensorFlow模型转换器金宝app支持包。如果未安装该支持金宝app包,则提供下载链接。

= importKerasNetwork (modelfile名称,值导入预先训练好的TensorFlow-Keras网络及其权重,以及由一个或多个名值对参数指定的附加选项。

例如,importKerasNetwork (modelfile WeightFile,重量)从模型文件导入网络modelfile权重文件中的权重权重.在这种情况下,modelfile可以是HDF5或JSON格式,权重文件必须是HDF5格式。

例子

全部折叠

下载并安装TensorFlow模型的深度学习工具箱转换器支持包。金宝app

类型importKerasNetwork在命令行。

importKerasNetwork

如果没有安装用于TensorFlow模型的深度学习工具箱转换器支持包,则该函数将在Add-On资源管理器中提供到所需支持包金宝app的链接。要安装支持包,请单击链接,然后金宝app单击安装.通过从模型文件导入网络,检查安装是否成功“digitsDAGnet.h5”在命令行。如果安装了所需的支持包,则函数返金宝app回DAGNetwork对象。

modelfile =“digitsDAGnet.h5”;net = importKerasNetwork(modelfile)
警告:保存的Keras网络不包含类。类将被设置为categorical(1:N),其中N是网络分类输出层的类数。要指定类,使用' classes '参数。
net = DAGNetwork with properties: Layers: [13x1 nnet.cnn.layer.Layer] Connections: [13x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

指定要导入的文件。该文件digitsDAGnet.h5包含有向无环图卷积神经网络,用于对数字图像进行分类。

modelfile =“digitsDAGnet.h5”

导入网络。

net = importKerasNetwork(modelfile)
警告:保存的Keras网络不包含类。类将被设置为categorical(1:N),其中N是网络分类输出层的类数。要指定类,使用' classes '参数。
net = DAGNetwork with properties: Layers: [13x1 nnet.cnn.layer.Layer] Connections: [13x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

绘制网络架构图。

情节(净)标题(“DAG网络架构”

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

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

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

这是一个以数字数据为训练对象的有向无环图卷积神经网络。

导入网络架构并从单独的文件导入权重。json文件没有输出层,也没有关于cost函数的信息。在导入文件时指定输出层类型。

net = importKerasNetwork(模型文件,“WeightFile”权重,...“OutputLayerType”“分类”
警告:保存的Keras网络不包含类。类将被设置为categorical(1:N),其中N是网络分类输出层的类数。要指定类,使用' classes '参数。
net = DAGNetwork with properties: Layers: [13x1 nnet.cnn.layer.Layer] Connections: [13x2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

指定模型文件。

modelfile =“digitsDAGnet.h5”

指定类名。

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

导入带有类名的Keras网络。

net = importKerasNetwork(模型文件,“类”类名);

阅读图像进行分类。

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

使用预训练的网络对图像进行分类。

标签=分类(net,I);

显示图像和分类结果。

imshow (I)标题([“分类结果:”char(标签)))

图中包含一个轴对象。分类结果:5的坐标轴对象包含一个image类型的对象。

输入参数

全部折叠

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

如果modelfile包括

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

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

如果modelfile仅包含网络架构,则必须在HDF5文件中提供权重,使用“WeightFile”名称-值对参数。

例子:“digitsnet.h5”

数据类型:字符|字符串

名称-值参数

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

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

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

包含权重的文件名称,指定为字符向量或字符串标量。WeightFile必须在当前文件夹中,在MATLAB路径下的文件夹中,或者必须包含文件的完整或相对路径。

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

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

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

例子:“OutputLayerType”、“回归”

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

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

例子:“ImageInputSize”,[28 28]

类的输出层,指定为分类向量、字符串数组、单元格字符向量数组或“汽车”.如果指定字符向量的字符串数组或单元格数组str,则软件将输出层的类设置为分类(str, str).如果“汽车”,则函数将类设置为分类(1:N),在那里N是类的数量。

数据类型:字符|分类|字符串|细胞

输出参数

全部折叠

预训练的Keras网络,返回为以下之一:

  • 如果Keras网络是类型顺序,然后是一个SeriesNetwork对象。

  • 如果Keras网络是类型模型,然后是一个DAGNetwork对象。

限制

  • importKerasNetwork金宝app支持以下TensorFlow-Keras版本:

    • 该函数完全支持TensorFlow-K金宝apperas 2.2.4版本。

    • 该函数对TensorFlow-Keras 2.2.5到2金宝app.4.0版本提供有限的支持。

更多关于

全部折叠

金宝app支持的Keras层

importKerasNetwork金宝app支持以下TensorFlow-Keras层类型转换为内置的MATLAB层,但有一些限制。

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

激活,激活名称:

  • “elu”

  • “relu”

  • “线性”

  • “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层,importKerasNetwork将向量值的缩放参数替换为向量元素的平均值。您可以在导入后将参数更改为向量。有关示例,请参见导入Keras PReLU图层

金宝app支持的Keras损失函数

importKerasNetwork金宝app支持以下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编码器)

importKerasNetwork返回网络作为一个DAGNetworkSeriesNetwork对象。这两个对象都支持代码生成。金宝app欲知更多有关MATLAB编码器和GPU编码器对深度学习工具金宝app箱对象的支持,请参见金宝app支持类(MATLAB编码器)而且金宝app支持类(GPU编码器),分别。

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

GPU使用导入网络

importKerasNetwork不会在GPU上执行。然而,importKerasNetwork导入预训练的神经网络进行深度学习DAGNetworkSeriesNetwork对象,你可以在GPU上使用。

  • 可以在CPU或GPU上使用导入的网络进行预测分类.使用name-value参数指定硬件需求ExecutionEnvironment.对于具有多个输出的网络,使用预测函数。

  • 可以在CPU或GPU上使用导入的网络进行预测预测.使用name-value参数指定硬件需求ExecutionEnvironment.如果网络有多个输出,则指定name-value参数ReturnCategorical作为真正的

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

使用GPU需要并行计算工具箱™和受支持的GPU设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱)

提示

  • 如果网络中包含一层TensorFlow模型的深度学习工具箱转换器不支持(参见金宝app金宝app支持的Keras层),然后importKerasNetwork返回一个错误消息。在这种情况下,您仍然可以使用importKerasLayers导入网络结构和权重。

  • 您可以导入具有多输入多输出(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

选择功能

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

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

参考文献

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

版本历史

在R2017b中引入

全部展开

不建议从R2018b开始