主要内容

importTensorFlowLayers

进口层TensorFlow网络

    描述

    例子

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

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

    笔记

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

    importTensorFlowLayers保存包中生成的自定义图层和相关的Tensorflow运算符+modelFolder

    importTensorFlowLayers不为每个不支持转换为内置MATLAB层的TensorFlow层自动生成自定义层。万博1manbetx有关如何处理不受支持的层的更多信息,请参见万博1manbetx提示

    例子

    lgraph= importTensorFlowLayers (modelFolder名称,值将图层和权重与TensorFlow网络导入,其中包含一个或多个名称值参数指定的其他选项。例如,“OutputLayerType”、“分类”将分类输出层附加到导入的网络架构的末尾。

    例子

    全部收缩

    以保存的模型格式导入预训练的TensorFlow网络作为LayerGraph对象。然后,组装导入的层到DAGNetwork对象,并利用组合网络对图像进行分类。

    指定模型文件夹。

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

    指定类名。

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

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

    lgraph = importTensorFlowLayers (modelFolder,'outputlayertype'“分类”
    导入保存的模型…翻译模型可能需要几分钟……完成翻译。
    lgraph = LayerGraph with properties: Layers: [13×1 nnet.cnn.layer.Layer] Connections: [13×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

    显示导入网络的最后一层。输出显示importTensorFlowLayers附加一个ClassificationOutputLayer以网络体系结构结束。

    lgraph.Layers(结束)
    ANS = ClassificationOutputLayer具有属性:名称:'classificationLayer_activation_1'类:'auto'类重量:'无'输出:'auto'upperameters lockfunction:'crossentropyex'

    分类层不包含类,因此必须在组装网络之前指定这些类。如果不指定类,则软件会自动将类设置为12、……N,在那里N是课程的数量。

    分类层有名称“ClassificationLayer_activation_1”.将类设置为Classnames.然后用新的分类层替换导入的分类层。

    Clayer = Lapraph.Layers(END);clayer.classes = classnames;Lgraph =替换剂(LGROPE,“ClassificationLayer_activation_1”、粘土);

    使用装配网络返回一个DAGNetwork对象。

    净= assembleNetwork (lgraph)
    net =具有属性的dagnetwork:图层:[13×1 nnet.cnn.layer.layer]连接:[13×2表] InputNames:{'input_1'} OutputNames:{'classificationLayer_activation_1'}

    阅读你想分类的图像。

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

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

    标签=分类(净,I);

    显示图像和分类结果。

    imshow(I)标题([的分类结果ClassNames {label}])

    以保存的模型格式导入预训练的TensorFlow网络作为LayerGraph对象兼容数据链路网络对象。然后,把LayerGraph对象至A.数据链路网络对图像进行分类。

    指定模型文件夹。

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

    指定类名。

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

    将TensoRFlow网络导入与兼容的图层数据链路网络对象。

    lgraph = importTensorFlowLayers (modelFolder,“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日

    将导入的层图转换为数据链路网络对象。

    dlnet = dlnetwork(3);

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

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

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

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

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

    prob =预测(dlnet,i_dlarray);[〜,标签] = max(prob);

    显示图像和分类结果。

    imshow(I)标题([的分类结果ClassNames {label}])

    以保存的模型格式导入预训练的TensorFlow网络作为LayerGraph对象。然后,组装导入的层到DAGNetwork对象。导入的网络包含不支持转换成内置MATLAB层的图层。万博1manbetx导入这些图层时,软件会自动生成自定义图层。

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

    指定模型文件夹。

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

    指定类名。

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

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

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

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

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

    印第安纳州= findCustomLayers (lgraph。层,' + 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”.将类设置为Classnames.然后用新的分类层替换导入的分类层。

    Clayer = Lapraph.Layers(END);clayer.classes = classnames;Lgraph =替换剂(LGROPE,“ClassificationLayer_activation_1”、粘土);

    使用装配网络.函数返回DAGNetwork准备用于预测的对象。

    净= assembleNetwork (lgraph)
    net =具有属性的Dagnetwork:图层:[15×1 nnet.cnn.layer.layer]连接:[15×2表]输入名称:{'input_1'} OutputNames:{'classificationLayer_activation_1'}

    Helper函数

    本节提供了辅助功能的代码findCustomLayers在此示例中使用。findCustomLayers返回指数自定义层的进口物流网络自动生成。

    函数indices = findcustomlayers(图层,packageName)s =什么([‘。’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,以及子文件夹变量.它还可以包含子文件夹资产额外资产

    • 该文件saved_model.pb包含层图体系结构和培训选项(例如,优化器、损失和指标)。

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

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

    • 的子文件夹额外资产包含与层图共存的补充文件(例如,用户信息)。

    例子:“MobileNet”

    例子:”。/ MobileNet '

    名称 - 值参数

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

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

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

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

    包裹+PackageName还能包含子包吗+行动.该子组件包含与Tensorflow运算符对应的MATLAB函数(参见万博1manbetx支持TensorFlow运营商)在自动生成的自定义层中使用。importTensorFlowLayers为每个操作符单独保存相关的MATLAB函数.m文件在子包中+行动.的对象函数数据链路网络,例如预测函数,在与自定义图层交互时使用这些运算符。

    例子:“PackageName”、“MobileNet”

    例子:“PackageName”、“CustomLayers”

    导入网络体系结构的深度学习工具箱网络的目标类型,指定为“dagnetwork”'dlnetwork'

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

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

    例子:'targetnetwork','dlnetwork'进口LayerGraph对象兼容数据链路网络对象。

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

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

    • 如果您指定“TargetNetwork”作为'dlnetwork'importTensorFlowLayers忽略name-value参数'outputlayertype'.一个数据链路网络对象没有输出层。

    例子:“OutputLayerType”、“分类”

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

    例子:“ImageInputSize”,[28 28]

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

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

    输出参数

    全部收缩

    网络架构,返回ASLayerGraph对象。

    要使用导入的层图进行预测,必须将LayerGraph对象至A.DAGNetwork数据链路网络对象。指定名称值参数“TargetNetwork”作为“dagnetwork”'dlnetwork'取决于预期的工作流程。

    • 转换A.LayerGraphDAGNetwork通过使用装配网络.在DAGNetwork对象,然后使用分类函数。

    • 转换A.LayerGraph数据链路网络通过使用数据链路网络.在数据链路网络对象,然后使用预测函数。将输入数据指定为adlarray.使用正确的数据格式(有关更多信息,请参阅FMT.论据dlarray.)。

    限制

    • importTensorFlowLayers万博1manbetx支持TensorFlow版本v2.0, v2.1, v2.2和v2.3。

    更多关于

    全部收缩

    TensorFlow-Keras层支持转换为内置万博1manbetxMATLAB

    importTensorFlowLayers万博1manbetx支持以下TensorFlow-keras图层类型进行转换为内置MATLAB层,具有一些限制。

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

    激活,带有激活名称:

    • 'elu'

    • “relu”

    • “线性”

    • “softmax”

    • 'sigmoid'

    • “漂亮”

    • 的双曲正切

    层数:

    先进的激活:

    • elu.

    • Softmax

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

    • LeakyReLU

    • PReLu

    层数:

    AveragePooling1D 平均池1层PaddingValue指定为“的意思是”
    AveragePooling2D 平均池2层PaddingValue指定为“的意思是”
    BatchNormalization batchNormalizationLayer
    双向(LSTM (__)) bilstmLayer
    连接 深度扫描层
    Conv1d. convolution1dLayer
    Conv2d. convolution2dLayer
    Conv2DTranspose transposedConv2dLayer
    CuDNNGRU gruLayer
    CuDNNLSTM lstmLayer
    密集的 fullyConnectedLayer
    DepthwiseConv2D groupedconvolution2dlayer.
    退出 dropoutLayer
    嵌入 wordEmbeddingLayer(文本分析工具箱)
    扁平 nnet.keras.layer.FlattenCStyleLayer
    GlobalAveragePooling1D globalAveragePooling1dLayer
    globalaveragepooling2d. globalAveragePooling2dLayer
    GlobalMaxPool1D globalmaxpooling1dlayer.
    GlobalMaxPool2D globalMaxPooling2dLayer
    gru. gruLayer
    输入 imageInputLayersequenceInputLayer,或featureInputLayer
    LSTM lstmLayer
    MaxPool1D maxPooling1dLayer
    MaxPool2D maxPooling2dLayer
    multiplicationLayer
    separableconv2d. groupedconvolution2dlayer.convolution2dLayer
    TimeDistributed sequenceFoldingLayer在包装层之前,和sequencfoldinglayer.缠绕层后
    UpSampling2D resize2dLayer(图像处理工具箱)
    UpSampling3D resize3dlayer.(图像处理工具箱)
    ZeroPadding1D nnet.keras.layer.ZeroPadding1DLayer
    ZeroPadding2D nnet.keras.layer.ZeroPadding2DLayer

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

    万博1manbetx支持TensorFlow-Keras损失函数

    importTensorFlowLayers万博1manbetx支持以下Keras loss功能:

    • mean_squared_error

    • patporical_crossentropy.

    • sparse_categorical_crossentropy

    • binary_crossentropy

    万博1manbetx支持TensorFlow运营商

    importTensorFlowLayers万博1manbetx支持以下TensorFlow操作符转换为MATLAB函数dlarray.万博1manbetx支持。

    张量流算子 相应的MATLAB函数
    添加 tfAdd
    地址 tfAddN
    addv2. tfAdd
    AvgPool tfAvgPool
    BatchMatMulV2 tfBatchMatMulV2
    BiasAdd tfBiasAdd
    广播托 tfBroadcastTo
    铸造 tfCast
    ConcatV2 tfCat
    const 无(转换为自定义层中的重量)
    Conv2d. tfconv2d.
    DepthToSpace 堤防(图像处理工具箱)
    DepthwiseConv2dNative tfDepthwiseConv2D
    经验值 经验值
    FusedBatchNormV3 tfBatchnorm
    GatherV2 tfGather
    身份 无(转换为自定义层的值分配)
    Identityn. tfIdentityN
    l2loss. tfL2Loss
    LeakyRelu leakyrelu.
    lt<
    日志 日志
    MatMul tfMatMul
    MaxPool tfmaxpool.
    最大值 tfMaximum
    意思是 tfMean
    最低限度 tfMinimum
    MirrorPad tfMirrorPad
    骡子 tfMul
    负的 --
    tfStack
    tfPad
    PadV2 tfPad
    PartitionedCall 无(在自定义图层方法中翻译为函数)
    战俘 权力.^
    tfProd
    随机标准正常 TFRANDOMSTASTADDNORMAL.
    范围 tfRange
    可读变量 无(转换为自定义层的值分配)
    RealDiv tfDiv
    雷卢 线性整流函数(Rectified Linear Unit)
    Relu6 线性整流函数(Rectified Linear Unit)最小值
    重塑 tfReshape
    ResizenearestNeighbor. dlresize(图像处理工具箱)
    Rsqrt SQRT.
    形状 tfShape
    乙状结肠 乙状结肠
    Softmax softmax
    SpaceToDepth spaceToDepth(图像处理工具箱)
    广场 . ^ 2
    √6 SQRT.
    SquaredDifference tfMulTFSUB.
    挤压 tfSqueeze
    StatefulPartitionedCall 无(在自定义图层方法中翻译为函数)
    stopgradient. tfStopGradient
    StridedSlice tfStridedSlicetfSqueeze
    TFSUB.
    双曲正切 塔尼
    瓷砖 文件
    转置 交换

    以获取有关操作的函数的更多信息dlarray.对象,请参见支持dlarray的函数列表万博1manbetx

    在GPU上使用导入的网络层

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

    • 将导入的LayerGraph对象至A.DAGNetwork通过使用装配网络.在DAGNetwork对象,然后可以通过使用分类。使用名称值参数指定硬件要求execultenvironment..对于具有多个输出的网络,使用预测函数并指定名称值参数ReturnCategorical作为真正的

    • 将导入的LayerGraph对象至A.数据链路网络通过使用数据链路网络.在数据链路网络对象,然后可以通过使用预测.功能预测如果输入数据或网络参数存储在GPU上,则在GPU上执行。

      • 如果你使用minibatchqueue要处理和管理小批量输入数据minibatchqueue对象在默认情况下将输出转换为GPU阵列(如果GPU可用)。

      • 使用dlupdate.转换a的可学习参数数据链路网络对象到GPU阵列。

        dlnet = dlupdate (@gpuarray dlnet)

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

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

    提示

    • 如果导入的网络包含不支持转换成内置MATLAB层的图层(请参阅万博1manbetxTensorFlow-Keras层支持转换为内置万博1manbetxMATLAB层),importTensorFlowLayers不自动生成自定义层,那么importTensorFlowLayers在不支持的层上插入一个占位符层。万博1manbetx要查找网络中不支持的层的名称和索引,请使用万博1manbetxfindPlaceholderLayers函数。然后,您可以将占位符层替换为您定义的新层。要替换一个图层,请使用replaceLayer

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

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

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

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

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

    选择功能

    使用进口物流网络importTensorFlowLayers导入已保存模型格式的TensorFlow网络[2].或者,如果网络处于HDF5或JSON格式,请使用importKerasNetworkimportKerasLayers导入网络。

    工具书类

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

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

    在R2021A介绍