主要内容

importtensorflowlayers.

进口层TensorFlow网络

    描述

    例子

    lgraph= importTensorFlowLayers (modelFolder返回TensorFlow™网络从文件夹modelFolder,它以已保存的模型格式包含模型(仅与TensorFlow 2兼容)saved_model.pb文件和学到的权重包含在变量子文件夹,并返回lgraph作为一个LayerGraph对象。

    importtensorflowlayers.要求TensorFlow模型的深度学习工具箱™转换器金宝app支持包。如果这个支持包没金宝app有安装,那么importtensorflowlayers.提供下载链接。

    请注意

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

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

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

    例子

    lgraph= importTensorFlowLayers (modelFolder名称,价值通过一个或多个name-value参数指定的附加选项从TensorFlow网络导入层和权重。例如,'outputlayertype','分类'将分类输出层附加到导入的网络体系结构的末端。

    例子

    全部收缩

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

    指定模型文件夹。

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

    指定类名。

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

    以保存的模型格式导入TensorFlow网络的层和权重。默认情况下,importtensorflowlayers.导入网络LayerGraph对象与a兼容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.追加A.ClassificationOutputLayer到最后的网络架构。

    Layers(结束)
    ans = classiationoutputlayer with properties: Name: ' classiationlayer_activation_1 ' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: ' crossenropyex '

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

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

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

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

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

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

    digitdatasetpath = fullfile(toolboxdir(“nnet”),“nndemos”'nndatasets''digitdataset');i = imread(fullfile(digitdatasetpath,'5''image4009.png'));

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

    标签=分类(净,我);

    显示图像和分类结果。

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

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

    指定模型文件夹。

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

    指定类名。

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

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

    lgraph = importTensorFlowLayers (modelFolder,“TargetNetwork”'dlnetwork'
    导入保存的模型…翻译模型,这可能需要几分钟…完成了翻译
    连接:[12×2 table] InputNames: {'input_1'} OutputNames: {1×0 cell}

    读取要分类的图像并显示图像的大小。该图像是一个灰度(单通道)图像,大小为28 × 28像素。

    digitdatasetpath = fullfile(toolboxdir(“nnet”),“nndemos”'nndatasets''digitdataset');i = 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”(空间、空间、通道、批处理)。在这个例子中,批大小是1,你可以省略它('SSC')。

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

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

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

    显示图像和分类结果。

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

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

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

    指定模型文件夹。

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

    指定类名。

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

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

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

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

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

    印第安纳州= findCustomLayers (lgraph。层,' + digitsDAGnetwithnoise ');lgraph.Layers(印第安纳州)
    ans = 2×1带有层的层数组:1' gaussian_noise_1' GaussianNoise digitsDAGnetwithnoise。kgaussiananise1layer3766 2' gaussian_noise_2' GaussianNoise digitsdagnetwithnoise . kgaussiananise2layer3791

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

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

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

    使用组合图层图assembleNetwork.该函数返回一个Dagnetwork.准备用于预测的对象。

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

    Helper函数

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

    功能indices = findcustomlayers(图层,packageName)s =什么([‘。’PackageName]);指数= 0(1、长度(小);i = 1:长度(层)j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”s.m {j}(1:end-2)])指数(j)= i;结尾结尾结尾结尾

    输入参数

    全部收缩

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

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

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

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

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

    例子:“MobileNet”

    例子:”。/ MobileNet '

    名称值对参数

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

    例子:importtensorflowlayers(Modelodger,'targetnetwork','dagnetwork','OutputlayerType','分类')导入网络层和权重modelFolder,将自动生成的自定义层保存到包中+ modelFolder在当前文件夹中,指定导入的层与Dagnetwork.对象,并将分类输出层附加到导入层的末尾。

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

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

    这个包+PackageName还可以包含子包装+行动,它包含TensorFlow操作符,用于自动生成的自定义层。importtensorflowlayers.将每个运算符的相关MATLAB函数保存在一个单独的.m子包中的文件+行动.的目标函数dlnetwork,例如预测函数,在与自定义层交互时使用这些操作符。

    例子:“PackageName”、“MobileNet”

    例子:“PackageName”、“CustomLayers”

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

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

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

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

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

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

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

    例子:'outputlayertype','分类'

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

    例子:'imageInputsize',[28]

    指示灯在命令窗口中显示导入进度信息,指定为数字或逻辑1真的) 或者0错误的)。

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

    输出参数

    全部收缩

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

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

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

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

    限制

    • importtensorflowlayers.金宝app支持Tensorflow版本v2.0,v2.1,v.2.2和v2.3。

    更多关于

    全部收缩

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

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

    TensorFlow-Keras层 相应的深度学习工具箱层
    添加 附加学者

    激活,激活名称:

    • “elu”

    • 'relu'

    • “线性”

    • “softmax”

    • “乙状结肠”

    • “漂亮”

    • 'tanh'

    层:

    高级激活:

    • ELU

    • softmax.

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

    • leakyrelu.

    • PReLu

    层:

    普通Pooling2d. 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 groupedconvolution2dlayer.或者Convolution2Dlayer.
    TimeDistributed SequenceFoldingLayer.在包装层之前,和sequenceUnfoldingLayer包裹层后
    UpSampling2D resize2dLayer(图像处理工具箱)
    UpSampling3D resize3dLayer(图像处理工具箱)
    Zeropaddding2d. nnet.keras.layer.ZeroPadding2DLayer

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

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

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

    • mean_squared_error.

    • patporical_crossentropy.

    • sparse_categorical_crossentropy

    • binary_crossentropy

    提示

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

    • importtensorflowlayers.可以导入TensorFlow- keras序列或函数API创建的TensorFlow网络。

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

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

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

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

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

    替代功能

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

    参考文献

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

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

    在R2021A介绍