主要内容

importTensorFlowNetwork

进口pretrainedTensorFlow网络

    描述

    例子

    = importTensorFlowNetwork (modelFolder从文件夹中导入一个预先训练的TensorFlow™网络modelFolder,其中包含保存的模型格式的模型(仅与TensorFlow 2兼容)saved_model.pb文件中所包含的学习权重变量子文件夹,并返回网络作为一个DAGNetworkdlnetwork对象。

    importTensorFlowNetwork要求用于张量流模型的深度学习工具箱™转换器金宝app支持包。如果没有安装此支金宝app持包,则importTensorFlowNetwork提供下载链接。

    请注意

    importTensorFlowNetwork尝试生成一个自定义层当你导入一个自定义TensorFlow层或当软件不能转换一个TensorFlow层到一个等效的内置MATLAB®层。有关软件支持转换的层的列表,请参见金宝appTensorFlow-Keras层支持转换为内置金宝appMATLAB层

    importTensorFlowNetwork在包中保存生成的自定义层和关联的TensorFlow操作符+modelFolder

    importTensorFlowNetwork不为每个TensorFlow层自动生成自定义层,该层不支持转换为内置MATLAB层。金宝app有关如何处理不受支持的层的更多信息,请参见金宝app提示

    例子

    = importTensorFlowNetwork (modelFolder名称,值使用一个或多个名称-值参数指定的附加选项导入预先训练的TensorFlow网络。例如,“OutputLayerType”、“分类”将网络导入为DAGNetwork在导入的网络体系结构的末端附加一个分类输出层。

    例子

    全部折叠

    以保存的模型格式导入预先训练好的TensorFlow网络DAGNetwork对象,并使用导入的网络对图像进行分类。

    指定模型文件夹。

    如果~ (“digitsDAGnet”“dir”)解压缩(“digitsDAGnet.zip”结束modelFolder =”。/ digitsDAGnet '

    指定类名。

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

    以保存的模型格式导入TensorFlow网络。默认情况下,importTensorFlowNetwork将网络导入为DAGNetwork对象。指定图像分类问题的输出层类型。

    网= importTensorFlowNetwork (modelFolder,“OutputLayerType”“分类”“类”类名)
    导入保存的模型…翻译模型可能需要几分钟……完成翻译。装配网络……导入完成。
    net = DAGNetwork with properties: Layers: [13×1 net.cnn.layer. layer] Connections: [13×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

    绘制网络架构图。

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

    阅读你想分类的图像,并显示图像的大小。图像是大小为28 × 28像素的灰度(单通道)图像。

    digitDatasetPath = fullfile (toolboxdir (“nnet”),“nndemos”“nndatasets”“DigitDataset”);我= imread (fullfile (digitDatasetPath,“5”“image4009.png”));大小(我)
    ans =1×228日28日

    显示网络的输入大小。在本例中,图像大小与网络输入大小匹配。如果它们不匹配,您必须使用imresize(我netInputSize (1:2))

    net.Layers (1) .InputSize
    ans =1×328日28日1

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

    标签=分类(净,我);

    显示图像和分类结果。

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

    以保存的模型格式导入预先训练好的TensorFlow网络dlnetwork对象,并使用导入的网络来预测类标签。

    指定模型文件夹。

    如果~ (“digitsDAGnet”“dir”)解压缩(“digitsDAGnet.zip”结束modelFolder =”。/ digitsDAGnet '

    指定类名。

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

    以保存的模型格式导入TensorFlow网络dlnetwork对象。

    网= importTensorFlowNetwork (modelFolder,“TargetNetwork”“dlnetwork”
    导入保存的模型…翻译模型可能需要几分钟……完成翻译。装配网络……导入完成。
    net = dlnetwork with properties: Layers: [12×1 net.cnn.layer. layer] Connections: [12×2 table] Learnables: [6×3 table] State: [0×3 table] InputNames: {'input_1'} OutputNames: {'activation_1'} Initialized: 1

    阅读你想分类的图像,并显示图像的大小。图像是大小为28 × 28像素的灰度(单通道)图像。

    digitDatasetPath = fullfile (toolboxdir (“nnet”),“nndemos”“nndatasets”“DigitDataset”);我= imread (fullfile (digitDatasetPath,“5”“image4009.png”));大小(我)
    ans =1×228日28日

    显示网络的输入大小。在本例中,图像大小与网络输入大小匹配。如果它们不匹配,您必须使用imresize(我netInputSize (1:2))

    .InputSize netInputSize = net.Layers (1)
    netInputSize =1×328日28日1

    将图像转换为dlarray.用尺寸格式化图像“SSCB”(spatial, spatial, channel, batch)。在本例中,批大小为1,您可以省略它(SSC的).

    I_dlarray = dlarray(单(我),“SSCB”);

    对样本图像进行分类,找到预测的标签。

    概率=预测(净,I_dlarray);[~,标签]= max(概率);

    显示图像和分类结果。

    imshow (I)标题([的分类结果一会{标签}])

    以保存的模型格式导入预先训练好的TensorFlow网络DAGNetwork对象,并使用导入的网络对图像进行分类。导入的网络包含不支持转换为内置MATLAB层的层。金宝app当您导入这些层时,软件会自动生成自定义层。

    这个例子使用了helper函数findCustomLayers.要查看此函数的代码,请参见Helper函数

    指定模型文件夹。

    如果~ (“digitsDAGnetwithnoise”“dir”)解压缩(“digitsDAGnetwithnoise.zip”结束modelFolder =”。/ digitsDAGnetwithnoise '

    指定类名。

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

    以保存的模型格式导入TensorFlow网络。默认情况下,importTensorFlowNetwork将网络导入为DAGNetwork对象。指定图像分类问题的输出层类型。

    网= importTensorFlowNetwork (modelFolder,“OutputLayerType”“分类”“类”类名);
    导入保存的模型…翻译模型可能需要几分钟……完成翻译。装配网络……导入完成。

    如果导入的网络包含不支持转换为内置MATLAB层的层,则金宝appimportTensorFlowNetwork可以自动生成自定义层来代替这些层。importTensorFlowNetwork将每个生成的自定义层保存为单独的.m包中的文件+ digitsDAGnetwithnoise在当前文件夹中。

    使用helper函数查找自动生成的自定义层的索引findCustomLayers,并显示自定义层。

    印第安纳州= findCustomLayers(净。层,' + digitsDAGnetwithnoise ');net.Layers(印第安纳州)
    ans = 2×1 Layer array with layers: 1' gaussian_noise_1' GaussianNoise digitsDAGnetwithnoise。kGaussianNoise1Layer3766 2' gaussian_noise_2' GaussianNoise digitsDAGnetwithnoise.kGaussianNoise2Layer3791

    绘制网络架构图。

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

    阅读你想分类的图像。

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

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

    标签=分类(净,我);

    显示图像和分类结果。

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

    Helper函数

    本节提供helper函数的代码findCustomLayers在这个例子中使用。findCustomLayers返回指数自定义层的importTensorFlowNetwork自动生成。

    函数index = findCustomLayers(layers,PackageName) s = what([‘。’PackageName]);指数= 0(1、长度(小);i = 1:长度(层)j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”S.m {j}(1:end-2)]) indices(j) = i;结束结束结束结束

    输入参数

    全部折叠

    包含TensorFlow模型的文件夹名称,指定为字符向量或字符串标量。modelFolder必须在当前文件夹中,否则必须包含文件夹的完整路径或相对路径。modelFolder必须包含文件saved_model.pb,以及子文件夹变量.它还可以包含子文件夹资产assets.extra

    • 该文件saved_model.pb包含层图架构和培训选项(例如,优化器、损失和度量)。

    • 的子文件夹变量包含预先训练的张量流网络学习到的权值。默认情况下,importTensorFlowNetwork进口的权重。

    • 的子文件夹资产包含层图可以使用的补充文件(例如,词汇表)。importTensorFlowNetwork没有导入文件在资产

    • 的子文件夹assets.extra包含与层图共存的补充文件(例如,用户信息)。

    例子:“MobileNet”

    例子:”。/ MobileNet '

    名称-值对的观点

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

    例子:importTensorFlowNetwork (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)modelFolder作为一个DAGNetwork对象,将自动生成的自定义层保存在包中+ modelFolder,并将分类输出层附加到导入的网络体系结构的末尾。

    其中的包的名称importTensorFlowNetwork保存自定义层,指定为字符向量或字符串标量。importTensorFlowNetwork保存自定义层包+PackageName在当前文件夹中。如果没有指定“PackageName”,然后importTensorFlowNetwork将自定义层保存在名为+modelFolder在当前文件夹中。有关包的更多信息,请参见包创建名称空间

    importTensorFlowNetwork尝试生成一个自定义层当你导入一个自定义TensorFlow层或当软件不能转换一个TensorFlow层到一个等效的内置MATLAB层。importTensorFlowNetwork将每个生成的自定义层保存为单独的.m文件中+PackageName.要查看或编辑自定义层,请打开关联的.m文件。有关自定义层的更多信息,请参见深度学习自定义图层

    这个包+PackageName还能包含子包吗+行动,其中包含在自动生成的自定义层中使用的TensorFlow操作符。importTensorFlowNetwork为每个操作符单独保存相关的MATLAB函数.m文件在子包中+行动.的对象函数dlnetwork,例如预测函数,在与自定义层交互时使用这些操作符。

    例子:“PackageName”、“MobileNet”

    例子:“PackageName”、“CustomLayers”

    深度学习工具箱网络的目标类型,具体为“dagnetwork”“dlnetwork”

    • 指定“TargetNetwork作为“dagnetwork”将网络导入为DAGNetwork对象。在这种情况下,必须包含由TensorFlow保存的模型损失函数或名称-值参数指定的输出层“OutputLayerType”

    • 指定“TargetNetwork作为“dlnetwork”将网络导入为dlnetwork对象。在这种情况下,不包含输出层。

    例子:“TargetNetwork”、“dlnetwork”

    输出层的类型importTensorFlowNetwork附加到导入的网络架构的末尾,指定为“分类”“回归”,或“pixelclassification”.附加一个pixelClassificationLayer(计算机视觉工具箱)对象需要计算机视觉工具箱™。

    • 如果您指定“TargetNetwork”作为“dagnetwork”和保存的模型modelFolder不指定损失函数,必须为name-value参数赋值“OutputLayerType”.一个DAGNetwork对象必须有一个输出层。

    • 如果您指定“TargetNetwork”作为“dlnetwork”importTensorFlowNetwork忽略name-value参数“OutputLayerType”.一个dlnetwork对象没有输出层。

    例子:“OutputLayerType”、“分类”

    网络输入图像的大小,指定为两个或三个数值对应的向量(高度、宽度)对于灰度图像和(高度、宽度、渠道)为彩色图像,分别。网络使用这些信息时saved_model.pb文件中modelFolder没有指定输入大小。

    例子:“ImageInputSize”,[28 28]

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

    • 如果您指定“TargetNetwork”作为“dagnetwork”importTensorFlowNetwork控件的输出层中存储关于类的信息DAGNetwork对象。

    • 如果您指定“TargetNetwork”作为“dlnetwork”importTensorFlowNetwork忽略name-value参数“类”.一个dlnetwork对象没有输出层来存储类上的信息。

    例子:“类”,{' 0 ',' 1 ',' 3 '}

    例子:“类”,直言({‘狗’,‘猫’})

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

    指示符,用于在命令窗口中显示导入进度信息,以数字或逻辑形式指定1真正的)或0).

    例子:“详细”,“真正的”

    输出参数

    全部折叠

    预训练的TensorFlow网络,返回为DAGNetworkdlnetwork对象。

    • 指定“TargetNetwork作为“dagnetwork”将网络导入为DAGNetwork对象。在DAGNetwork对象,然后使用分类函数。

    • 指定“TargetNetwork作为“dlnetwork”将网络导入为dlnetwork对象。在dlnetwork对象,然后使用预测函数。将输入数据指定为dlarray使用正确的数据格式(有关更多信息,请参阅fmt的观点dlarray).

    限制

    • importTensorFlowNetwork金宝app支持TensorFlow版本v2.0, v2.1, v2.2和v2.3。

    更多关于

    全部折叠

    TensorFlow-Keras层支持转换为内置金宝appMATLAB

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

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

    激活,带有激活名称:

    • “elu”

    • “relu”

    • “线性”

    • “softmax”

    • “乙状结肠”

    • “漂亮”

    • 的双曲正切

    层:

    先进的激活:

    • ELU

    • Softmax

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

    • LeakyReLU

    • PReLu

    层:

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

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

    金宝app支持TensorFlow-Keras损失函数

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

    • mean_squared_error

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

    提示

    • 如果导入的网络包含不支持转换为内置MATLAB层的层(参见金宝appTensorFlow-Keras层支持转换为内置金宝appMATLAB层),importTensorFlowNetwork不生成自定义层,那么importTensorFlowNetwork返回一个错误。在这种情况下,您仍然可以使用importTensorFlowLayers导入网络架构。

    • importTensorFlowNetwork可以导入用TensorFlow- keras顺序或功能API创建的TensorFlow网络。

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

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

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

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

    • 一揽子计划的成员+PackageName如果包的父文件夹不在MATLAB路径上,则无法访问(自定义层和TensorFlow操作符)。有关更多信息,请参见软件包和MATLAB路径

    选择功能

    使用importTensorFlowNetworkimportTensorFlowLayers导入已保存模型格式的TensorFlow网络[2].或者,如果网络是HDF5或JSON格式,则使用importKerasNetworkimportKerasLayers导入网络。

    参考文献

    [1]TensorFlowhttps://www.tensorflow.org/

    [2]使用SavedModel格式https://www.tensorflow.org/guide/saved_model

    介绍了R2021a