主要内容

importKerasNetwork

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

描述

例子

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

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

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

例如,importKerasNetwork(模型文件、'WeightFile',权重)从模型文件中导入网络modelfile和权重文件的权重权重.在这种情况下,modelfile支持HDF5或JSON格式,权重文件必须为HDF5格式。

例子

全部折叠

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

类型importKerasNetwork在命令行。

importKerasNetwork

如果未安装TensorFlow模型支持包的深度学习工具箱转换器,则该函数将提供到Add-On Explorer中所需支持包万博1manbetx的链接。要安装支持包,请单击链接,然后万博1manbetx单击安装.通过从模型文件导入网络,检查安装是否成功“digitsDAGnet.h5”在命令行。如果安装了所需的支持包,则函数将返回万博1manbetxDAGNetwork对象。

modelfile =.“digitsDAGnet.h5”;净= importKerasNetwork (modelfile)
警告:保存的Keras网络不包括类。类别将设置为分类(1:N),其中N是网络分类输出层中的类别数。要指定类,请使用“classes”参数。
net=DAG网络,具有以下属性:层:[13x1 nnet.cnn.layer.layer]连接:[13x2表]输入名称:{'input_1'}输出名称:{'ClassificationLayer_activation_1'}

指定要导入的文件。档案digitsDAGnet.h5包含一个对数字图像分类的有向无环图卷积神经网络。

modelfile =.“digitsDAGnet.h5”

导入网络。

净= importKerasNetwork (modelfile)
警告:保存的Keras网络不包括类。类别将设置为分类(1:N),其中N是网络分类输出层中的类别数。要指定类,请使用“classes”参数。
net=DAG网络,具有以下属性:层:[13x1 nnet.cnn.layer.layer]连接:[13x2表]输入名称:{'input_1'}输出名称:{'ClassificationLayer_activation_1'}

绘制网络架构图。

情节(网)标题(“DAG网络体系结构”

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

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

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

这是一个基于数字数据训练的有向无环图卷积神经网络。

导入网络体系结构并从单独的文件导入权重。.json文件没有输出层或有关成本函数的信息。输入文件时指定输出图层类型。

网= importKerasNetwork (modelfile,“WeightFile”,重量,...'outputlayertype'“分类”
警告:保存的Keras网络不包括类。类别将设置为分类(1:N),其中N是网络分类输出层中的类别数。要指定类,请使用“classes”参数。
net=DAG网络,具有以下属性:层:[13x1 nnet.cnn.layer.layer]连接:[13x2表]输入名称:{'input_1'}输出名称:{'ClassificationLayer_activation_1'}

指定模型文件。

modelfile =.“digitsDAGnet.h5”

指定类名。

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

导入带有类名的Keras网络。

网= importKerasNetwork (modelfile,“类”,类名);

阅读图像进行分类。

digitDatasetPath = fullfile (toolboxdir (“内特”),“nndemos”“nndatasets”“DigitDataset”);我= imread (fullfile (digitDatasetPath,“5”“image4009.png”));

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

标签=分类(网络,i);

显示图像和分类结果。

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

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

输入参数

全部折叠

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

如果modelfile包括

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

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

如果modelfile仅包括网络体系结构,则必须使用“WeightFile”名称-值对的论点。

例子:“digitsnet.h5”

数据类型:char|一串

名称-值参数

指定可选的逗号分隔的对名称,值论点。名称参数名和价值为对应值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

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

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

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

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

如果是网络modelfile有多个输出,则不能使用此参数指定输出层类型。使用importKerasLayers代替。importKerasLayers为输出插入占位符层。导入之后,您可以使用findPlaceholderLayersreplaceLayer,分别。

例子:“OutputLayerType”,“回归”

网络输入图像的大小,指定为对应于[高度、宽度]用于灰度图像和(高度、宽度、渠道)分别用于彩色图像。网络使用此信息modelfile没有指定输入大小。

如果是网络modelfile有多个输入,那么您无法使用此参数指定输入大小。使用importKerasLayers代替。importKerasLayers插入输入的占位符层。导入后,可以使用查找和替换占位符层findPlaceholderLayersreplaceLayer,分别。

例子:“ImageInputSize”,[28 28]

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

数据类型:char|分类|一串|细胞

输出参数

全部折叠

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

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

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

限制

  • importKerasNetwork万博1manbetx支持Tensorflow-Keras版本如下:

    • 该功能完全支持TensorFlow K万博1manbetxeras 2.2.4之前的版本。

    • 该函数提供了对TensorFlow-Keras版本2.2万博1manbetx.5到2.4.0的有限支持。

更多关于

全部折叠

万博1manbetx支持Keras层

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

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

激活,带有激活名称:

  • 'elu'

  • “relu”

  • “线性”

  • “softmax”

  • “乙状结肠”

  • “漂亮”

  • 的双曲正切

层数:

先进的激活:

  • ELU

  • Softmax

  • 雷卢

  • LeakyReLU

  • 普莱鲁

层数:

AveragePooling1D 平均池1层PaddingValue指定为“的意思是”
AveragePooling2D 平均池2层PaddingValue指定为“的意思是”
批处理规范化 batchNormalizationLayer
双向(LSTM(__)) bilstmLayer
连接 depthConcatenationLayer
Conv1D convolution1dLayer
Conv2D convolution2dLayer
Conv2DTranspose transposedConv2dLayer
CuDNNGRU gruLayer
CuDNNLSTM 第一层
密集的 fullyConnectedLayer
DepthwiseConv2D groupedConvolution2dLayer
退出 dropoutLayer
嵌入 字嵌入层(文本分析工具箱)
nnet.keras.layer.FlattleCstyleLayer
GlobalAveragePooling1D globalAveragePooling1dLayer
GlobalAveragePooling2D GlobalAveragePoolg2Dlayer
GlobalMapoolD globalMaxPooling1dLayer
GlobalMapool2D globalMaxPooling2dLayer
格勒乌 gruLayer
输入 图像输入层sequenceInputLayer,或特征输入层
LSTM 第一层
MaxPool1D maxPooling1dLayer
MaxPool2D maxPooling2dLayer
乘法层
SeparableConv2D groupedConvolution2dLayerconvolution2dLayer
TimeDistributed sequenceFoldingLayer在包裹层之前,然后sequenceUnfoldingLayer在包裹层之后
UpSampling2D 调整2D图层的大小(图像处理工具箱)
UpSampling3D resize3dlayer.(图像处理工具箱)
ZeroPadding1D nnet.keras.layer.ZeroPadding1DLayer
ZeroPadding2D nnet.keras.layer.zeropadding2dlayer.

*对于PReLU层,importKerasNetwork用向量元素的平均值替换向量值缩放参数。您可以在导入后将参数更改回矢量。例如,请参见导入Keras PReLU图层

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

importKerasNetwork万博1manbetx支持以下Keras损耗功能:

  • mean_squared_error

  • categorical_crossentropy

  • 稀疏分类交叉熵

  • 二元交叉熵

在GPU上使用导入的网络

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

  • 您可以使用以下命令在CPU或GPU上使用导入的网络进行预测:分类.使用名称值参数指定硬件要求execultenvironment.. 对于具有多个输出的网络,请使用预测函数。

  • 您可以使用以下命令在CPU或GPU上使用导入的网络进行预测:预测.使用名称值参数指定硬件要求execultenvironment.. 如果the network has multiple outputs, specify the name-value argument返回分类作为真正的

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

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

提示

  • 如果网络包含以下图层:张量流模型的深度学习工具箱转换器不支持(见万博1manbetx万博1manbetx支持Keras层)那么importKerasNetwork返回一条错误消息。在这种情况下,您仍然可以使用importKerasLayers导入网络架构和权重。

  • 您可以导入具有多个输入和多个输出(MIMO)的Keras网络。使用importKerasNetwork如果网络包括输入的输入大小信息和输出的损耗信息。否则,请使用importKerasLayers.的importKerasLayers函数为输入和输出插入占位符层。导入之后,您可以使用findPlaceholderLayersreplaceLayer,分别。导入MIMO Keras网络的工作流与导入MIMO ONNX™网络的工作流相同。例如,请参见导入并组装具有多个输出的ONNX网络.要了解具有多个输入和多个输出的深度学习网络,请参见多输入多输出网络

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

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

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

    有关为训练和预测而预处理图像的详细信息,请参见深度学习的图像预处理

选择功能

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

  • 如果您导入自定义TensorFlow-Keras层或如果软件不能将TensorFlow-Keras层转换为等效的内置MATLAB层,您可以使用importtensorflownetwork.importTensorFlowLayers,它试图生成一个自定义层。例如,importtensorflownetwork.importTensorFlowLayers导入TensorFlow Keras时生成自定义图层λ层。

兼容性的考虑

全部展开

不建议从R2018b开始

参考

[1]凯拉斯:Python Deep学习库https://keras.io

介绍了R2017b