主要内容

importTensorFlowLayers

进口层TensorFlow网络

    描述

    例子

    lgraph= importTensorFlowLayers (modelFolder)返回的层TensorFlow™网络文件夹modelFolder保存模型中的模型,其中包含格式(兼容只有TensorFlow 2)。该函数可以导入TensorFlow网络创建TensorFlow-Keras顺序或功能的API。importTensorFlowLayers进口中定义的层saved_model.pb中包含的文件和学习权重变量子文件夹,并返回lgraph作为一个LayerGraph对象。

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

    请注意

    importTensorFlowLayers试图生成一个自定义层当你导入一个定制TensorFlow层或当软件不能TensorFlow层转化为一个等价的内置MATLAB®层。的层的软件支持转换,明白了金宝appTensorFlow-Keras层支持转换成内置金宝appMATLAB层

    importTensorFlowLayers保存生成的自定义层和相关TensorFlow运营商在包+modelFolder

    importTensorFlowLayers并不会自动生成一个自定义层每个TensorFlow层不支持转换成一个内置的MATLAB层。金宝app如何处理不支持层的更多信息,见金宝app提示

    例子

    lgraph= importTensorFlowLayers (modelFolder,名称,值)进口的层和权重TensorFlow网络附加选项指定一个或多个名称参数。例如,“OutputLayerType”、“分类”附加一个分类输出层的进口网络体系结构。

    例子

    全部折叠

    导入一个pretrained TensorFlow网络在保存的模型格式LayerGraph对象。然后,将进口层组装成一个DAGNetwork对象,并使用组装网络分类图像。

    指定模型文件夹。

    如果~ (“digitsDAGnet”,“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属性:层:[13×1 nnet.cnn.layer.Layer]连接:[13×2表]InputNames: {“input_1”} OutputNames: {“ClassificationLayer_activation_1”}

    显示的最后一层进口网络。输出显示importTensorFlowLayers附加一个ClassificationOutputLayer的网络体系结构。

    lgraph.Layers(结束)
    ans = ClassificationOutputLayer属性:名称:“ClassificationLayer_activation_1”类:“汽车”ClassWeights:“没有一个”OutputSize:‘汽车’Hyperparameters LossFunction:“crossentropyex”

    分类层不包含的类,因此您必须指定这些之前装配网络。如果你不指定的类,然后软件自动设置类1,2、……N,在那里N类的数量。

    分类层的名字“ClassificationLayer_activation_1”。设置类一会然后导入分类层替换为新的。

    粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“ClassificationLayer_activation_1”、粘土);

    组装层图使用assembleNetwork返回一个DAGNetwork对象。

    净= assembleNetwork (lgraph)
    网= 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”));

    使用进口网络分类的图像。

    标签=分类(净,我);

    显示图像的分类结果。

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

    导入一个pretrained TensorFlow网络在保存的模型格式LayerGraph对象兼容dlnetwork对象。然后,把LayerGraph对象一个dlnetwork对图像进行分类。

    指定模型文件夹。

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

    指定类名。

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

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

    lgraph = importTensorFlowLayers (modelFolder,“TargetNetwork”,“dlnetwork”)
    导入保存模型……翻译的模式,这可能需要几分钟…完成翻译。
    lgraph = LayerGraph属性:层:[12×1 nnet.cnn.layer.Layer]连接:[12×2表]InputNames: {“input_1”} OutputNames:{1×0细胞}

    读你想要的图像分类和显示图像的大小。图像是灰度图像(一个频道)28-by-28像素大小。

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

    进口层图转换为一个dlnetwork对象。

    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)标题([的分类结果一会{标签}])

    导入一个pretrained TensorFlow网络在保存的模型格式LayerGraph对象。然后,将进口层组装成一个DAGNetwork对象。导入的网络不支持包含层转换成内置MATLAB层。金宝app软件自动生成自定义层当你进口这些层。

    下面的例子使用了辅助函数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层,金宝appimportTensorFlowLayers可以自动生成自定义层代替这些层。importTensorFlowLayers保存每个生成自定义一个单独的层。m文件包+ digitsDAGnetwithnoise在当前文件夹。

    找到自动生成自定义的指标层,使用helper函数findCustomLayers,并显示自定义层。

    印第安纳州= findCustomLayers (lgraph.Layers,' + digitsDAGnetwithnoise ');lgraph.Layers(印第安纳州)
    ans = 2×1层阵列层:1‘gaussian_noise_1 GaussianNoise digitsDAGnetwithnoise。kGaussianNoise1Layer3766 2的gaussian_noise_2 GaussianNoise digitsDAGnetwithnoise.kGaussianNoise2Layer3791

    分类层不包含的类,因此您必须指定这些之前装配网络。如果你不指定的类,然后软件自动设置类1,2、……N,在那里N类的数量。

    分类层的名字“ClassificationLayer_activation_1”。设置类一会然后导入分类层替换为新的。

    粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“ClassificationLayer_activation_1”、粘土);

    组装层图使用assembleNetwork。函数返回一个DAGNetwork为预测对象,已经可以使用了。

    净= assembleNetwork (lgraph)
    网= DAGNetwork属性:层:[15×1 nnet.cnn.layer.Layer]连接:[15×2表]InputNames: {“input_1”} OutputNames: {“ClassificationLayer_activation_1”}

    Helper函数

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

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

    输入参数

    全部折叠

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

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

    • 的子文件夹变量包含的权重学习pretrained TensorFlow网络。默认情况下,importTensorFlowLayers进口的权重。

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

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

    例子:“MobileNet”

    例子:”。/ MobileNet '

    名称-值参数

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

    例子:importTensorFlowLayers (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)进口的网络层和权重modelFolder,节约自动生成自定义层的包+ modelFolder在当前文件夹,指定导入的层兼容DAGNetwork对象,并附加一个分类输出层的进口层。

    的包的名称importTensorFlowLayers保存自定义图层,指定为一个特征向量或字符串标量。importTensorFlowLayers保存自定义层包+PackageName在当前文件夹。如果你不指定“PackageName”,然后importTensorFlowLayers保存自定义层包命名+modelFolder在当前文件夹。关于包的更多信息,请参阅包创建名称空间

    importTensorFlowLayers试图生成一个自定义层当你导入一个定制TensorFlow层或当软件不能TensorFlow层转化为一个等价的内置MATLAB层。importTensorFlowLayers保存每个生成自定义一个单独的层。m文件中+PackageName。查看或编辑自定义图层,打开相关。m文件。自定义层的更多信息,见深度学习自定义层

    这个包+PackageName也可以包含分包+行动。这个分包包含MATLAB函数对应TensorFlow运营商(见金宝app支持TensorFlow运营商),用于自动生成自定义层。importTensorFlowLayers保存相关的每个操作符在一个单独的MATLAB函数。m文件分装+行动。对象的功能dlnetwork,如预测函数,使用这些操作符与自定义交互层。

    例子:“PackageName”、“MobileNet”

    例子:“PackageName”、“CustomLayers”

    目标类型的深度学习工具箱网络对进口网络架构,指定为“dagnetwork”“dlnetwork”

    • 如果您指定“TargetNetwork”作为“dagnetwork”导入的网络架构兼容DAGNetwork对象。在这种情况下,进口的lgraph必须包括一个输出层TensorFlow保存模型损失函数或指定的名称论点吗“OutputLayerType”

    • 如果您指定“TargetNetwork”作为“dlnetwork”导入的网络架构兼容dlnetwork对象。在这种情况下,进口的lgraph不包括一个输出层。

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

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

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

    • 如果您指定“TargetNetwork”作为“dlnetwork”,importTensorFlowLayers忽略了名称-值参数“OutputLayerType”。一个dlnetwork对象没有一个输出层。

    例子:“OutputLayerType”、“分类”

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

    例子:“ImageInputSize”, [28 28]

    指示器显示导入进度信息在命令窗口中,指定为一个数字或逻辑1(真正的)或0()。

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

    输出参数

    全部折叠

    网络体系结构,作为一个返回LayerGraph对象。

    使用进口层预测图,你必须转换LayerGraph对象一个DAGNetworkdlnetwork对象。指定名称的参数“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层 相应的深度学习工具箱层
    添加 additionLayer

    激活,激活的名字:

    • “elu”

    • “relu”

    • “线性”

    • “softmax”

    • “乙状结肠”

    • “漂亮”

    • 的双曲正切

    层:

    先进的激活:

    • ELU

    • Softmax

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

    • LeakyReLU

    • PReLu*

    层:

    AveragePooling1D averagePooling1dLayerPaddingValue指定为“的意思是”
    AveragePooling2D averagePooling2dLayerPaddingValue指定为“的意思是”
    BatchNormalization batchNormalizationLayer
    双向(LSTM (__)) bilstmLayer
    连接 depthConcatenationLayer
    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
    格勒乌 gruLayer
    输入 imageInputLayer,sequenceInputLayer,或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
    经验值 经验值
    FusedBatchNormV3 tfBatchnorm
    GatherV2 tfGather
    身份 (没有一个翻译在自定义层)赋值
    IdentityN tfIdentityN
    L2Loss tfL2Loss
    LeakyRelu leakyrelu
    lt,<
    日志 日志
    MatMul tfMatMul
    MaxPool tfMaxPool
    最大 tfMaximum
    的意思是 tfMean
    最低 tfMinimum
    MirrorPad tfMirrorPad
    Mul tfMul
    负的 -,- - - - - -
    tfStack
    tfPad
    PadV2 tfPad
    PartitionedCall (没有翻译功能自定义层方法)
    战俘 权力,。^
    刺激 tfProd
    RandomStandardNormal tfRandomStandardNormal
    范围 tfRange
    ReadVariableOp (没有一个翻译在自定义层)赋值
    RealDiv tfDiv
    线性整流函数(Rectified Linear Unit) 线性整流函数(Rectified Linear Unit)
    Relu6 线性整流函数(Rectified Linear Unit)最小值
    重塑 tfReshape
    ResizeNearestNeighbor dlresize(图像处理工具箱)
    Rsqrt √6
    形状 tfShape
    乙状结肠 乙状结肠
    Softmax softmax
    SpaceToDepth spaceToDepth(图像处理工具箱)
    广场 . ^ 2
    √6 √6
    SquaredDifference tfMultfSub
    挤压 tfSqueeze
    StatefulPartitionedCall (没有翻译功能自定义层方法)
    StopGradient tfStopGradient
    StridedSlice tfStridedSlicetfSqueeze
    tfSub
    双曲正切 双曲正切
    瓷砖 tfTile
    转置 交换

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

    在GPU上使用进口网络层

    importTensorFlowLayers不执行GPU。然而,importTensorFlowLayers进口的层pretrained深度学习的神经网络LayerGraph对象,您可以使用GPU。

    • 将导入的LayerGraph对象一个DAGNetwork对象的使用assembleNetwork。在DAGNetwork对象,然后可以预测类标签上使用的CPU或GPU分类。使用名称-值参数指定的硬件需求ExecutionEnvironment。对于多个输出的网络,使用预测功能和指定名称的论点ReturnCategorical作为真正的

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

      • 如果你使用minibatchqueue输入数据的处理和管理mini-batches,minibatchqueue对象将输出转换为GPU数组默认情况下如果GPU可用。

      • 使用dlupdate转换的可学的参数dlnetworkGPU数组对象。

        dlnet = dlupdate (@gpuarray dlnet)

    • 你可以训练进口LayerGraph对象在一个CPU或GPU通过使用trainNetwork。指定训练选项,包括选项执行环境,使用trainingOptions函数。使用名称-值参数指定的硬件需求ExecutionEnvironment。如何加快培训更多的信息,请参阅并行扩展深度学习,在gpu上,在云端

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

    提示

    • 如果进口网络包含一层不支持转换成一个内置的MATLAB层(见金宝appTensorFlow-Keras层支持转换成内置金宝appMATLAB层),importTensorFlowLayers不自动生成一个自定义图层,那么importTensorFlowLayers插入一个占位符一层一层的不支持的。金宝app找到支持的名称和指标层网络中,使用金宝appfindPlaceholderLayers函数。你可以换一个占位符层定义的一个新图层。替换一个层,使用replaceLayer

    • 使用pretrained网络预测或转让学习新的图片,你必须进行预处理图像以同样的方式用于火车导入模型的图像预处理。最常见的预处理步骤调整图片大小,图像减去平均值,并从BGR图像RGB图像转换。

      • 调整图像,使用imresize。例如,[3]227227年imresize(图片)

      • 将图像从RGB到BGR格式,使用翻转。例如,翻转(图片3)

      更多信息预处理图像进行训练和预测,明白了预处理图像深度学习

    • 包的成员+PackageName(自定义层和TensorFlow运营商)是无法访问如果包父文件夹不是在MATLAB的道路。有关更多信息,请参见包和MATLAB的道路

    选择功能

    使用importTensorFlowNetworkimportTensorFlowLayers进口TensorFlow网络保存模型格式[2]。另外,如果网络HDF5或JSON格式,使用importKerasNetworkimportKerasLayers导入网络。

    引用

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

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

    介绍了R2021a