主要内容

输入流层

进口层TensorFlow网络

    描述

    例子

    lgraph=导入器流层(modeldolder.从文件夹返回TensorFlow™网络的层modeldolder.该函数可以导入用TensorFlow- keras顺序或函数API创建的TensorFlow网络。输入流层导入中定义的图层saved_model.pb文件中包含的文件和学习的权重变量子文件夹,并返回lgraph作为一个LayerGraph对象。

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

    请注意

    输入流层尝试在导入自定义Tensorflow层或软件无法将TensorFlow层转换为同等内置MATLAB时生成自定义层®图层。有关软件支持转换的图层列表,请参阅金宝app支持转换为内置MATLAB层的TensoRFLO金宝appW-KERAS层

    输入流层在包中保存生成的自定义层和关联的TensorFlow操作符+modeldolder.

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

    例子

    lgraph=导入器流层(modeldolder.名称,值使用由一个或多个名称-值参数指定的附加选项从TensorFlow网络导入层和权重。例如,“OutputLayerType”、“分类”在导入的网络体系结构的末尾附加分类输出层。

    例子

    全部折叠

    以保存的模型格式导入预先训练好的TensorFlow网络LayerGraph对象。然后,将导入的图层组装成一个Dagnetwork.对象,并使用组装的网络对图像进行分类。

    指定模型文件夹。

    如果~存在(“digitsDAGnet”“dir”)解压('digitsdagnet.zip'结束模型文件夹=”。/ digitsDAGnet '

    指定类名。

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

    以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,输入流层将网络导入为LayerGraph对象与a兼容Dagnetwork.对象。指定图像分类问题的输出层类型。

    lgraph=导入传感器FlowLayers(modelFolder,“OutputLayerType”“分类”
    正在导入保存的模型…正在翻译模型,这可能需要几分钟…已完成翻译。
    lgraph=LayerGraph,属性为:层:[13×1 nnet.cnn.layer.layer]连接:[13×2表]输入名称:{'input_1'}输出名称:{'ClassificationLayer_activation_1'}

    显示导入网络的最后一层。输出显示输入流层附加一个分类输出层到网络架构的末尾。

    lgraph.Layers(结束)
    名称:'ClassificationLayer_activation_1' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'

    分类层不包含类,因此在组装网络之前必须指定这些类。如果不指定类,则软件会自动将这些类设置为12, ...,N哪里N为类数。

    分类层具有名称“分类层\激活\ 1”.将课程设置为一会然后用新的分类层替换导入的分类层。

    粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“分类层\激活\ 1”、粘土);

    使用层图assembleNetwork返回一个Dagnetwork.对象。

    净= assembleNetwork (lgraph)
    net = DAGNetwork with properties: Layers: [13×1 net.cnn.layer. layer] Connections: [13×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

    阅读要对的图像进行分类。

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

    使用导入的网络对图像进行分类。

    标签=分类(净,我);

    显示图像和分类结果。

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

    以保存的模型格式导入预先训练好的TensorFlow网络LayerGraph对象与a兼容dlnetwork对象。然后,转换LayerGraph对象一个dlnetwork对图像进行分类。

    指定模型文件夹。

    如果~存在(“digitsDAGnet”“dir”)解压('digitsdagnet.zip'结束模型文件夹=”。/ digitsDAGnet '

    指定类名。

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

    导入TensorFlow网络作为层兼容dlnetwork对象。

    lgraph=导入传感器FlowLayers(modelFolder,“TargetNetwork”“dlnetwork”
    正在导入保存的模型…正在翻译模型,这可能需要几分钟…已完成翻译。
    LAPHR =具有属性的分层图:图层:[12×1 nnet.cnn.layer.layer]连接:[12×2表]输入名称:{'input_1'}输出名:{1×0小区}

    读取要对图像进行分类和显示图像大小的图像。图像是具有尺寸为28×28像素的灰度(单通道)图像。

    digitDatasetPath = fullfile (toolboxdir (“内特”),“nndemos”“nndatasets”“DigitDataset”);i = imread(fullfile(digitdatasetpath,“5”'image4009.png'));尺寸(i)
    ans =1×228日28日

    将导入的图层图转换为dlnetwork对象。

    dlnet = dlnetwork (lgraph);

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

    dlnet.Layers(1).输入大小
    ans =1×328日28日1

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

    i_dlarray = dlarray(单(i),“SSCB”);

    分类样本图像并查找预测标签。

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

    显示图像和分类结果。

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

    以保存的模型格式导入预先训练好的TensorFlow网络LayerGraph对象。然后,将导入的图层组装成一个Dagnetwork.对象。导入的网络包含不支持转换为内置MATLAB层的层。金宝app当您导入这些层时,软件会自动生成自定义层。

    此示例使用辅助功能findCustomLayers.要查看此函数的代码,请参见Helper函数

    指定模型文件夹。

    如果~存在(“digitsDAGnetwithnoise”“dir”)解压(“digitsDAGnetwithnoise.zip”结束模型文件夹=”。/ digitsDAGnetwithnoise '

    指定类名。

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

    以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,输入流层将网络导入为LayerGraph对象与a兼容Dagnetwork.对象。指定图像分类问题的输出层类型。

    lgraph=导入传感器FlowLayers(modelFolder,“OutputLayerType”“分类”);
    正在导入保存的模型…正在翻译模型,这可能需要几分钟…已完成翻译。

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

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

    ind=findCustomLayers(lgraph.Layers,' + digitsDAGnetwithnoise ');lgraph.Layers(印第安纳州)
    ANS = 2×1层阵列带图层:1'Gaussian_Noise_1'Gaussiannoise DigitsDagnetWithNoise.kgaussiannoise1Layer3766 2'Gaussian_Noise_2'Gaussiannoise DigitsDagnetWithNoise.kgaussiannoise2Layer3791

    分类层不包含类,因此在组装网络之前必须指定这些类。如果不指定类,则软件会自动将这些类设置为12, ...,N哪里N为类数。

    分类层具有名称“分类层\激活\ 1”.将课程设置为一会然后用新的分类层替换导入的分类层。

    粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“分类层\激活\ 1”、粘土);

    使用层图assembleNetwork.函数返回Dagnetwork.准备好用于预测的对象。

    净= assembleNetwork (lgraph)
    net = DAGNetwork with properties: Layers: [15×1 net.cnn.layer. layer] Connections: [15×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

    Helper函数

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

    函数index = findCustomLayers(layers,PackageName) s = what(['.\'PackageName]);索引=零(1,长度(s.m));i = 1:长度(层)j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”s.m {j}(1:end-2)])指数(j)= i;结束结束结束结束

    输入参数

    全部折叠

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

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

    • 子文件夹变量包含普雷托雷富流网络学习的权重。默认情况下,输入流层进口的权重。

    • 子文件夹资产包含层图可以使用的补充文件(例如,词汇表)。输入流层不会导入文件资产

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

    例子:“MobileNet”

    例子:'./mobilenet'

    名称-值参数

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

    例子:importTensorFlowLayers (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)从导入网络图层和权重modeldolder.,将自动生成的自定义图层保存在包中+ Modelogrer.在当前文件夹中,指定导入的层与Dagnetwork.对象,并将分类输出图层附加到导入图层的末尾。

    其中的包的名称输入流层保存指定为字符向量或字符串标量的自定义图层。输入流层保存自定义图层包+包裹名字在当前文件夹中。如果没有指定'包裹名字',然后输入流层将自定义层保存在名为+modeldolder.在当前文件夹中。有关包裹的更多信息,请参阅包创建名称空间

    输入流层尝试在导入自定义Tensorflow层或软件无法将TensorFlow层转换为等效内置MATLAB层时生成自定义层。输入流层将生成的每个自定义图层保存到单独的.m归档+包裹名字.要查看或编辑自定义层,请打开关联的.m文件。有关自定义层的更多信息,请参见深度学习自定义图层

    这个包+包裹名字还可以包含子包装+老年退休金.这个子包包含与TensorFlow运算符对应的MATLAB函数(参见金宝app支持张量流算子)用于自动生成的自定义图层。输入流层为每个操作符单独保存相关的MATLAB函数.m子包中的文件+老年退休金.目标函数dlnetwork, 如那个预测函数,在与自定义层交互时使用这些操作符。

    例子:“PackageName”、“MobileNet”

    例子:'packagename','customlayers'

    导入网络架构的深度学习工具箱网络目标类型,具体为'dagnetwork'或者“dlnetwork”

    • 如果您指定“TargetNetwork”作为'dagnetwork',所导入的网络架构兼容aDagnetwork.对象。在本例中,导入的lgraph必须包含由TensorFlow保存的模型损失函数或名称-值参数指定的输出层“OutputLayerType”

    • 如果您指定“TargetNetwork”作为“dlnetwork”,所导入的网络架构兼容adlnetwork对象。在本例中,导入的lgraph不包含输出层。

    例子:“TargetNetwork”、“dlnetwork”导入LayerGraph对象与a兼容dlnetwork对象。

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

    • 如果您指定“TargetNetwork”作为'dagnetwork'和保存的模型modeldolder.如果未指定丢失函数,则必须为name value参数指定一个值“OutputLayerType”.一个Dagnetwork.对象必须具有输出层。

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

    例子:“OutputLayerType”、“分类”

    网络输入图像的大小,指定为对应于[高度、宽度]对于灰度图像和(高度、宽度、渠道)为彩色图像,分别。网络使用这些信息时saved_model.pb归档modeldolder.没有指定输入大小。

    例子:“ImageInputSize”,[28]

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

    例子:'verbose','真'

    输出参数

    全部折叠

    网络架构,作为一个LayerGraph对象。

    要使用导入的图层图进行预测,必须转换LayerGraph对象一个Dagnetwork.或者dlnetwork对象。指定名称-值参数“TargetNetwork”作为'dagnetwork'或者“dlnetwork”取决于预期的工作流。

    • 转化为LayerGraph到一个Dagnetwork.通过使用assembleNetwork.在Dagnetwork.对象,然后使用分类函数。

    • 转化为LayerGraph到一个dlnetwork通过使用dlnetwork.在dlnetwork对象,然后使用预测函数。将输入数据指定为dlarray使用正确的数据格式(有关更多信息,请参阅fmt的观点dlarray).

    限制

    • 输入流层金宝app支持Tensorflow版本v2.0,v2.1,v.2.2和v2.3。

    更多关于

    全部折叠

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

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

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

    激活,激活名称:

    • “elu”

    • 'relu'

    • '线性'

    • “softmax”

    • “乙状结肠”

    • “漂亮”

    • 的双曲正切

    层:

    先进的激活:

    • ELU

    • Softmax

    • 雷卢

    • Leaceryru.

    • PRELU.

    层:

    AveragePooling1D 普通Pooling1dlayer.PaddingValue指定为'意思'
    AveragePooling2D averagePooling2dLayerPaddingValue指定为'意思'
    批处理规范化 BatchnormalizationLayer.
    双向(LSTM(u u)) Bilstmlayer.
    连接 depthConcatenationLayer
    Conv1D 卷积层
    Conv2D Convolution2Dlayer.
    conv2dtranspose. transposedconv2dlayer.
    Cudnngru gruLayer
    CuDNNLSTM 第一层
    密集的 fullyConnectedLayer
    DepthwiseConv2D groupedConvolution2dLayer
    辍学 oploutlayer.
    嵌入 字嵌入层(文本分析工具箱)
    nnet.keras.layer.FlattleCstyleLayer
    GlobalAveragePooling1D globalAveragePooling1dLayer
    GlobalAveragePooling2D GlobalAveragePoolg2Dlayer
    GlobalMapoolD globalMaxPooling1dLayer
    GlobalMapool2D globalmaxpooling2dlayer.
    格勒乌 gruLayer
    输入 imageInputlayer.sequenceInputlayer., 或者特征输入层
    LSTM. 第一层
    MaxPool1D maxPooling1dLayer
    MaxPool2D maxpooling2dlayer.
    多功能层
    SeparableConv2D groupedConvolution2dLayer或者Convolution2Dlayer.
    TimeDistributed sequenceFoldingLayer在包裹层之前,然后sequenceUnfoldingLayer包裹层后
    UpSampling2D 调整2D图层的大小(图像处理工具箱)
    UpSampling3D 调整3D图层的大小(图像处理工具箱)
    ZeroPadding1D nnet.keras.layer.ZeroPadding1DLayer
    ZeroPadding2D nnet.keras.layer.ZeroPadding2DLayer

    *对于PReLU层,输入流层用载体元素的平均值替换矢量值缩放参数。导入后,您可以将参数更改回向量。例如,看到导入Keras PReLU图层

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

    输入流层金宝app支持以下Keras损耗功能:

    • 均方误差

    • categorical_crossentropy

    • sparse_categorical_crossentropy.

    • binary_crossentropy.

    金宝app支持TensorFlow运营商

    输入流层金宝app支持以下Tensorflow运算符以转换为MATLAB功能dlarray金宝app支持。

    TensorFlow运营商 相应的MATLAB函数
    添加 tfAdd
    AddN tfaddn.
    AddV2 tfAdd
    AvgPool tfAvgPool
    BatchMatMulV2 tfbatchmatmulv2.
    比亚萨德 tfBiasAdd
    BroadcastTo 广播
    tfCast
    ConcatV2 tfCat
    常量 无(转换为自定义层中的权重)
    Conv2D tfConv2D
    堤防 depthToSpace(图像处理工具箱)
    DepthwiseConv2dNative tfdepthwiseconv2d.
    费用 经验
    fusedbatchnormv3. tfBatchnorm
    GatherV2 tfGather
    身份 无(转换为自定义图层中的值指定)
    IdentityN tfIdentityN
    L2Loss tfL2Loss
    LeakyRelu leakyrelu
    较少的 LT.<
    日志 日志
    马特穆尔 TFMATMUL.
    马克斯普尔 tfMaxPool
    最大限度 TF最大值
    的意思是 TFmean.
    最低 tfMinimum
    镜垫 tfMirrorPad
    Mul TFMUL.
    负的 -
    tfStack
    tfPad
    PADV2. tfPad
    分区呼叫 无(在自定义层方法中转换为函数)
    战俘 权力.^
    刺激 tfProd
    RandomStandardNormal tfRandomStandardNormal
    范围 tfRange
    ReadVarifepop. 无(转换为自定义图层中的值指定)
    READIV. TFDIV
    线性整流函数(Rectified Linear Unit) 雷卢
    Relu6 雷卢
    重塑 tfReshape
    ResizeNearestNeighbor dlresize.(图像处理工具箱)
    Rsqrt √6
    形状 tfShape
    乙状结肠 乙状结肠
    Softmax softmax.
    SpaceToDepth 空间深度(图像处理工具箱)
    广场 . ^ 2
    √6 √6
    平方差 TFMUL.或者tfSub
    挤压 挤压
    StatefulPartitionedCall 无(在自定义层方法中转换为函数)
    StopGradient tfStopGradient
    stridingslice Tfstridslice或者挤压
    tfSub
    双曲正切 双曲正切
    tfTile
    转置 排列

    以获取有关操作的函数的更多信息dlarray对象,看到支持dlarray的函数列表金宝app

    在GPU上使用导入的网络层

    输入流层没有在GPU上执行。然而,输入流层进口普雷雷尼神经网络的层以获得深度学习作为一个LayerGraph对象,可以在GPU上使用。

    • 转换导入LayerGraph对象一个Dagnetwork.对象的使用assembleNetwork.在Dagnetwork.对象,然后可以使用分类.使用名称值参数指定硬件要求ExecutionEnvironment.对于具有多个输出的网络,请使用预测函数并指定名称值参数返回分类作为真的

    • 转换导入LayerGraph对象一个dlnetwork对象的使用dlnetwork.在dlnetwork对象,然后可以使用预测.这个函数预测如果输入数据或网络参数存储在GPU上,则在GPU上执行。

      • 如果你使用小型批处理队列对小批量输入数据进行处理和管理小型批处理队列对象默认将输出转换为GPU阵列(如果有GPU可用)。

      • dlupdate转换a的可学习参数dlnetwork对象到GPU阵列。

        dlnet = dlupdate (@gpuarray dlnet)

    • 你可以训练进口的LayerGraph在CPU或GPU上使用trainNetwork.要指定培训选项,包括执行环境的选项,请使用培训选项函数。使用名称值参数指定硬件要求ExecutionEnvironment.有关如何加速培训的更多信息,请参阅在GPU上并在GPU上并在云中扩大深度学习

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

    提示

    • 如果导入的网络包含不支持转换为内置MATLAB层的层(参见金宝app支持转换为内置MATLAB层的TensoRFLO金宝appW-KERAS层)及输入流层不会自动生成自定义图层,则输入流层将占位符层插入到代替不支持的层。金宝app要查找网络中不受支持的图层的名称和指标,请使用金宝appfindPlaceholderLayers作用然后,可以使用定义的新图层替换占位符图层。要替换图层,请使用replaceLayer

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

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

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

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

    • 包裹的成员+包裹名字(如果包父文件夹不在Matlab路径上,则无法访问(自定义图层和TensoRFlow运算符)。有关更多信息,请参阅软件包与MATLAB路径

    选择功能

    importTensorFlowNetwork或者输入流层以保存的模型格式导入TensorFlow网络[2].或者,如果网络是HDF5或JSON格式,则使用进口卡拉斯网络或者进口卡拉斯层导入网络。

    参考文献

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

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

    介绍了R2021a