主要内容

importKerasNetwork

导入预训练Keras网络和权重

描述

例子

=IMPORTKERAS网络(模型文件)进口预先训练的TensorFlow™-Keras网络及其权值模型文件

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

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

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

例子

全部崩溃

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

类型importKerasNetwork在命令行。

importKerasNetwork

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

modelfile =“digitsDAGnet.h5”;net=importKerasNetwork(模型文件)
警告:保存的Keras网络不包括职业。将类设置为category (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网络不包括职业。将类设置为category (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网络体系结构的轴包含graphplot类型的对象。

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

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

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

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

net=importKerasNetwork(模型文件,“WeightFile”权重,...“OutputLayerType”,“分类”)
警告:保存的Keras网络不包括职业。将类设置为category (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”;

指定类名。

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

导入带有类名的Keras网络。

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

阅读图像进行分类。

digitDatasetPath=fullfile(toolboxdir(“nnet”),“nndemos”,“数据集”,“DigitDataset”);我= imread (fullfile (digitDatasetPath,'5',“image4009.png”));

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

标签=分类(净,我);

显示图像和分类结果。

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

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

输入参数

全部崩溃

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

如果模型文件包括

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

  • 只有网络架构,然后它可以是HDF5或JSON (.json)格式。

如果模型文件只包含网络架构,则必须在HDF5文件中使用“WeightFile”名称-值对参数。

例子:“Digitnet.h5”

数据类型:字符|字符串

名称-值对的观点

指定可选的逗号分隔的字符对名称、值参数。的名字是参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

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

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

当时,函数附加到导入的网络体系结构末端的输出层类型模型文件不指定损失函数,指定为“分类”,“回归”,或“像素分类”.附加一个像素分类层(计算机视觉工具箱)对象需要计算机视觉工具箱™。

如果一个网络模型文件具有多个输出,则不能使用此参数指定输出图层类型。使用importKerasLayers代替。importKerasLayers为输出插入占位符层。导入之后,您可以使用findPlaceholderLayers替换层分别地

例子:“OutputLayerType”、“回归”

网络输入图像的大小,指定为两个或三个数值对应的向量(高度、宽度)对于灰度图像和[高度、宽度、通道]为彩色图像,分别。网络使用这些信息时模型文件不指定输入大小。

如果一个网络模型文件有多个输入,则不能使用此参数指定输入大小。使用importKerasLayers代替。importKerasLayers为输入插入占位符层。导入之后,您可以使用findPlaceholderLayers替换层分别地

例子:“ImageInputSize”,[28 28]

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

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

输出参数

全部崩溃

预先训练的Keras网络,返回如下:

  • 如果是Keras网络类型顺序的那么是一个系列网络对象。

  • 如果是Keras网络类型模型那么是一个DAGNetwork对象。

限制

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

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

    • 该函数提供了对TensorFlow-Keras版本2.2金宝app.5到2.4.0的有限支持。

更多关于

全部崩溃

金宝app支撑Keras层

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

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

激活,带有激活名称:

  • “elu”

  • “relu”

  • “线性”

  • “softmax”

  • “乙状结肠”

  • “嗖嗖”

  • 的双曲正切

层:

先进的激活:

  • 埃卢

  • Softmax

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

  • LeakyReLU

  • PReLu*

层:

平均池2D averagePooling2dLayer具有填充值指定为“的意思是”
BatchNormalization batchNormalizationLayer
双向(LSTM (__)) bilstmLayer
连接 深度连接层
Conv2D convolution2dLayer
Conv2DTranspose transposedConv2dLayer
CuDNNGRU 泥鳅
CuDNNLSTM lstmLayer
稠密的 完全连接层
depthwisecon2d 分组卷积层
辍学 dropoutLayer
嵌入 wordEmbeddingLayer(文本分析工具箱)
压平 nnet.keras.layer.FlattenCStyleLayer
GlobalAveragePooling2D globalAveragePooling2dLayer
GlobalMapooling2D globalMaxPooling2dLayer
格鲁 泥鳅
输入 imageInputLayer,sequenceInputLayer,或featureInputLayer
LSTM lstmLayer
MaxPooling2D maxPooling2dLayer
倍增 multiplicationLayer
可分离分子V2D 分组卷积层convolution2dLayer
时间分布 序列折叠层在包裹层之前,以及序列展开层缠绕层后
上采样2D resize2dLayer(图像处理工具箱)
上采样3D resize3dLayer(图像处理工具箱)
零填充2D nnet.keras.layer.ZeroPadding2DLayer

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

金宝app支持Keras Loss功能

importKerasNetwork金宝app支持以下Keras loss功能:

  • mean_squared_error

  • 范畴交叉熵

  • sparse_categorical_crossentropy

  • binary_crossentropy

提示

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

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

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

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

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

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

选择功能

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

兼容性的考虑

全部展开

不建议从R2018b开始

参考文献

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

在R2017b中引入