主要内容

importtensorflowlayers.

进口层TensorFlow网络

    描述

    例子

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

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

    请注意

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

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

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

    例子

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

    例子

    全部折叠

    以保存的型号格式导入预磨削的Tensorflow网络作为一个LayerGraph对象。然后,组装导入的层到DAGNetwork对象,并使用组装网络对图像进行分类。

    指定模型文件夹。

    如果〜存在('digitsdagnet'“dir”)解压缩('digitsdagnet.zip'结束modeldolder =”。/ digitsDAGnet '

    指定类名。

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

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

    lgraph = importTensorFlowLayers(Modelodger,“OutputLayerType”'分类'
    导入保存的模型......翻译模型,这可能需要几分钟...完成翻译。
    LAPHRAGH =具有属性的分层图:图层:[13×1 nnet.cnn.layer.layer]连接:[13×2表]输入名称:{'input_1'} OutputNames:{'classificationLayer_activation_1'}

    显示导入的网络的最后一层。输出显示importtensorflowlayers.附加一个ClassificationOutputLayer.到网络架构的末尾。

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

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

    分类层有名称'classificationlayer_activation_1'.将类设置为一会然后用新的分类层替换导入的分类层。

    粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,'classificationlayer_activation_1'、粘土);

    使用汇编返回一个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 ('nnet'),'nndemos'“nndatasets”“DigitDataset”);我= imread (fullfile (digitDatasetPath,“5”'image4009.png'));

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

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

    显示图像和分类结果。

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

    以保存的型号格式导入预磨削的Tensorflow网络作为一个LayerGraph对象兼容dlnetwork.对象。然后,把LayerGraph对象一个dlnetwork.分类图像。

    指定模型文件夹。

    如果〜存在('digitsdagnet'“dir”)解压缩('digitsdagnet.zip'结束modeldolder =”。/ digitsDAGnet '

    指定类名。

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

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

    lgraph = importTensorFlowLayers(Modelodger,“TargetNetwork”“dlnetwork”
    导入保存的模型......翻译模型,这可能需要几分钟...完成翻译。
    lgraph = LayerGraph with properties: Layers: [12×1 nnet.cnn.layer.Layer] Connections: [12×2 table] InputNames: {'input_1'} OutputNames: {1×0 cell}

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

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

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

    dlnet = dlnetwork (lgraph);

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

    dlnet.layers(1).InputSize
    ans =1×328日28日1

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

    I_dlarray = dlarray(单(我),'SSCB');

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

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

    显示图像和分类结果。

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

    以保存的型号格式导入预磨削的Tensorflow网络作为一个LayerGraph对象。然后,组装导入的层到DAGNetwork对象。导入的网络包含不支持转换为内置MATLAB层的层。金宝app当您导入这些层时,软件会自动生成自定义层。

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

    指定模型文件夹。

    如果〜存在(“digitsDAGnetwithnoise”“dir”)解压缩(“digitsDAGnetwithnoise.zip”结束modeldolder =”。/ digitsDAGnetwithnoise '

    指定类名。

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

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

    lgraph = importTensorFlowLayers(Modelodger,“OutputLayerType”'分类');
    导入保存的模型......翻译模型,这可能需要几分钟...完成翻译。

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

    使用Helper功能查找自动生成的自定义图层的索引FindCustomLayers.,并显示自定义层。

    ind = findcustomlayers(lapraph.layers,' + digitsDAGnetwithnoise ');lgraph.Layers(印第安纳州)
    ans = 2×1 Layer array with layers: 1' gaussian_noise_1' GaussianNoise digitsDAGnetwithnoise。kGaussianNoise1Layer3766 2' gaussian_noise_2' GaussianNoise digitsDAGnetwithnoise.kGaussianNoise2Layer3791

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

    分类层有名称'classificationlayer_activation_1'.将类设置为一会然后用新的分类层替换导入的分类层。

    粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,'classificationlayer_activation_1'、粘土);

    使用汇编.函数返回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(['。\'包裹名字]);索引=零(1,长度(s.m));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包含图层图架构和培训选项(例如,优化器,丢失和度量标准)。

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

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

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

    例子:'mobilenet'

    例子:”。/ MobileNet '

    名称-值参数

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

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

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

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

    这个包+PackageName还能包含子包吗+ ops..这个子包包含与TensorFlow运算符对应的MATLAB函数(参见金宝app支持的Tensorflow运算符)在自动生成的自定义层中使用。importtensorflowlayers.为每个操作符单独保存相关的MATLAB函数.m文件在子包中+ ops..对象功能dlnetwork.,例如预测函数,在与自定义层交互时使用这些操作符。

    例子:“PackageName”、“MobileNet”

    例子:“PackageName”、“CustomLayers”

    用于导入网络架构的深度学习工具箱网络的目标类型,指定为“dagnetwork”“dlnetwork”

    • 如果您指定“TargetNetwork”作为“dagnetwork”,所导入的网络架构兼容aDAGNetwork对象。在这种情况下,进口了LGRAPH.必须包含由TensorFlow保存的模型损失函数或名称-值参数指定的输出层“OutputLayerType”

    • 如果您指定“TargetNetwork”作为“dlnetwork”,所导入的网络架构兼容adlnetwork.对象。在这种情况下,进口了LGRAPH.不包含输出层。

    例子:“TargetNetwork”、“dlnetwork”进口A.LayerGraph对象兼容dlnetwork.对象。

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

    • 如果您指定“TargetNetwork”作为“dagnetwork”和保存的模型modelFolder不指定丢失函数,必须为名称值参数分配值“OutputLayerType”.一个DAGNetwork对象必须具有输出层。

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

    例子:“OutputLayerType”、“分类”

    网络的输入图像的大小指定为与相对应的两种或三个数值的向量[高度宽度]对于灰度图像和(高度、宽度、渠道)对于彩色图像。网络使用此信息saved_model.pb文件in.modelFolder没有指定输入大小。

    例子:'imageInputsize',[28 28]

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

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

    输出参数

    全部折叠

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

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

    • 把一个LayerGraph到A.DAGNetwork通过使用汇编.在这方面DAGNetworkObject,然后您将使用该标签预测类标签分类函数。

    • 把一个LayerGraph到A.dlnetwork.通过使用dlnetwork..在这方面dlnetwork.Object,然后您将使用该标签预测类标签预测函数。将输入数据指定为dlarray使用正确的数据格式(有关更多信息,请参阅fmt争论dlarray).

    限制

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

    更多关于

    全部折叠

    TensorFlow-keras层支持转换成内置金宝app马铃薯草

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

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

    激活,带有激活名称:

    • “elu”

    • “relu”

    • “线性”

    • 'softmax'

    • “乙状结肠”

    • “漂亮”

    • 的双曲正切

    层:

    先进的激活:

    • ELU

    • Softmax

    • relu.

    • LeakyReLU

    • PRELU.

    层:

    AveragePooling1D 普通Pooling1dlayer.PaddingValue指定为“的意思是”
    AveragePooling2D 普通Pooling2dlayer.PaddingValue指定为“的意思是”
    Batchnormalization. batchNormalizationLayer
    双向(LSTM (__)) bilstmLayer
    衔接 depthConcatenationLayer
    Conv1D Convolution1dlayer.
    Conv2D convolution2dLayer
    conv2dtranspose. transposedConv2dLayer
    CuDNNGRU gruLayer
    cudnnlstm lstmlayer.
    密集的 fullyConnectedLayer
    DepthwiseConv2D groupedConvolution2dLayer
    辍学 dropoutLayer
    嵌入 WordembeddingLayer.(文本分析工具箱)
    nnet.keras.layer.flattencstylayer.
    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层,importtensorflowlayers.用向量元素的平均值替换向量值缩放参数。您可以在导入后将参数更改回矢量。例如,请参见进口keras prelu层

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

    importtensorflowlayers.金宝app支持以下Keras丢失功能:

    • mean_squared_error.

    • categorical_crossentropy

    • sparse_categorical_crossentropy

    • binary_crossentropy

    金宝app支持的TensorFlow运营商

    importtensorflowlayers.金宝app支持以下TensorFlow操作符转换为MATLAB函数dlarray金宝app支持。

    TensoRflow运算符 相应的MATLAB函数
    添加 TFADD.
    addn. tfAddN
    AddV2 TFADD.
    AvgPool TFAVGPOOL.
    BatchMatMulV2 tfBatchMatMulV2
    Biasadd. TFBIASADD
    BroadcastTo tfbroadcastto.
    投掷 tfcast.
    Concatv2. TFCAT.
    常量 无(转换为自定义层中的权重)
    Conv2D tfConv2D
    DepthToSpace depthToSpace(图像处理工具箱)
    DepthwiseConv2dNative tfDepthwiseConv2D
    exp. exp.
    FusedBatchNormV3 tfBatchnorm
    Gentich2. TFGATHER.
    身份 无(转换为自定义层中的值分配)
    IdentityN tfIdentityN
    L2Loss tfL2Loss
    LeakyRelu leakyrelu
    lt<
    日志 日志
    Matmul. tfMatMul
    maxpool. tfMaxPool
    最大 tfmaximum.
    意思 tfMean
    最低 tfMinimum
    Mirrorpad. tfmirrorpad.
    m tfMul
    负的 --
    tfStack
    TFPAD.
    PadV2 TFPAD.
    partitionedcall. 无(在自定义层方法中转换为函数)
    力量.^
    prod TFPROD.
    Acquarstandardnormal. tfRandomStandardNormal
    范围 tfrange.
    ReadVarifepop. 无(转换为自定义层中的值分配)
    RealDiv tfDiv
    relu. relu.
    Relu6 relu.最小值
    重塑 tfReshape
    ResizeNearestNeighbor dlresize(图像处理工具箱)
    Rsqrt √6
    形状 tfshape.
    sigmoid. sigmoid.
    Softmax softmax
    SpaceToDepth spacetodepth.(图像处理工具箱)
    广场 . ^ 2
    √6 √6
    SquaredDifference. tfMultfSub
    挤压 tfSqueeze
    sengyfulpartitionedcall. 无(在自定义层方法中转换为函数)
    StopGradient tfStopGradient
    StridedSlice tfstringslice.tfSqueeze
    tfSub
    双曲正切 双曲正切
    瓷砖 Tfile.
    转置 换乘

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

    在GPU上使用导入的网络层

    importtensorflowlayers.不能在GPU上执行。然而,importtensorflowlayers.为深度学习导入预先训练的神经网络层LayerGraph对象,您可以在GPU上使用。

    • 将导入的LayerGraph对象一个DAGNetwork对象的使用汇编.在这方面DAGNetwork对象,您可以通过使用,预测CPU或GPU上的类标签分类.使用name-value参数指定硬件需求ExecutionEnvironment.对于具有多个输出的网络,使用预测函数并指定名称-值参数return类别作为真正的

    • 将导入的LayerGraph对象一个dlnetwork.对象的使用dlnetwork..在这方面dlnetwork.对象,您可以通过使用,预测CPU或GPU上的类标签预测.这个函数预测如果输入数据或网络参数存储在GPU上,则在GPU上执行。

      • 如果你使用小公子处理和管理迷你批次的输入数据,小公子如果GPU可用,则默认情况下,对象将输出转换为GPU数组。

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

        dlnet = dlupdate (@gpuarray dlnet)

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

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

    提示

    • 如果导入的网络包含不支持转换为内置MATLAB层的层(参见金宝appTensorFlow-Keras层支持转换为内置金宝appMATLAB层) 和importtensorflowlayers.那时不会自动生成自定义图层importtensorflowlayers.在不支持的层上插入一个占位符层。金宝app要查找网络中不支持的层的名称和索引,请使用金宝appFindPlaceHolderLayers.函数。然后,您可以用您定义的新图层替换占位符。更换层,使用replaceLayer

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

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

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

      有关预处理图像进行培训和预测的更多信息,请参阅深度学习的图像预处理

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

    选择功能

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

    参考

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

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

    介绍了R2021a