主要内容

importTensorFlowNetwork

导入净化纹orflow.网络

    描述

    例子

    = importTensorFlownetwork(modeldolder.从文件夹导入普雷雷定Tensorflow™网络modeldolder.,其中包含保存的模型格式的模型(仅使用Tensorflow 2兼容)。该函数导入中定义的图层saved_model.pb.文件和学习权重包含在内变量子文件夹,并返回网络作为一个Dagnetwork.要么dlnetwork目的。

    importTensorFlowNetwork要求深度学习工具箱™转换器用于TensoRFLOW模型万博1manbetx支持包。如果未安装此支持万博1manbetx包,则importTensorFlowNetwork提供下载链接。

    笔记

    importTensorFlowNetwork在导入自定义Tensorflow层或软件无法将TensorFlow层转换为等效内置MATLAB时,尝试生成自定义层®层。有关软件支持转换的图层列表,请参阅万博1manbetxTensoRFlow-Keras层支持转换为内置万博1manbetxMatlab层

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

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

    例子

    = importTensorFlownetwork(modeldolder.名称,价值使用一个或多个名称-值参数指定的附加选项导入预先训练的TensorFlow网络。例如,'outputlayertype','分类'将网络作为一个导入Dagnetwork.使用分类输出图层附加到导入的网络架构的末尾。

    例子

    全部收缩

    以保存的模型格式导入预先训练好的TensorFlow网络Dagnetwork.对象,并使用导入的网络对图像进行分类。

    指定模型文件夹。

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

    指定类名。

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

    以保存的模型格式导入TensorFlow网络。默认情况下,importTensorFlowNetwork将网络作为一个导入Dagnetwork.目的。指定图像分类问题的输出层类型。

    net = importtensorflownetwork(modeldolder,“OutputLayerType”'分类''课程',classnames)
    导入保存的模型…翻译模型可能需要几分钟……完成翻译。装配网络……导入完成。
    net =具有属性的dagnetwork:图层:[13×1 nnet.cnn.layer.layer]连接:[13×2表] InputNames:{'input_1'} OutputNames:{'classificationLayer_activation_1'}

    绘制网络架构。

    情节(净)标题('DAG网络架构'

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

    digitdatasetpath = fullfile(toolboxdir('nnet'),'nndemos''nndatasets''digitdataset');i = imread(fullfile(digitdatasetpath,'5''image4009.png'));尺寸(i)
    ans =.1×228 28.

    显示网络的输入大小。在这种情况下,图像尺寸与网络输入大小匹配。如果它们不匹配,则必须通过使用映像大小imresize(我,NetInputsize(1:2))

    Net.Layers(1).InputSize
    ans =.1×328 28 1

    使用佩带的网络对图像进行分类。

    标签=分类(净,我);

    显示图像和分类结果。

    imshow (I)标题(['分类结果'Char(标签)])

    以保存的型号格式导入佩带的TensorFlow网络作为adlnetwork对象,并使用导入的网络预测类标签。

    指定模型文件夹。

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

    指定类名。

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

    以保存的型号格式导入TensorFlow网络作为一个dlnetwork目的。

    net = importtensorflownetwork(modeldolder,'targetnetwork''dlnetwork'
    导入保存的模型…翻译模型可能需要几分钟……完成翻译。装配网络……导入完成。
    NET =具有属性的DLnetwork:图层:[12×1 nnet.cnn.layer.layer]连接:[12×2表]了解:[6×3表]状态:[0×3表]输入名称:{'input_1'} OutputNames:{'activation_1'}初始化:1

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

    digitdatasetpath = fullfile(toolboxdir('nnet'),'nndemos''nndatasets''digitdataset');i = imread(fullfile(digitdatasetpath,'5''image4009.png'));尺寸(i)
    ans =.1×228 28.

    显示网络的输入大小。在这种情况下,图像尺寸与网络输入大小匹配。如果它们不匹配,则必须通过使用映像大小imresize(我,NetInputsize(1:2))

    NetInputSize = Net.Layers(1).InputSize
    netinputsize =1×328 28 1

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

    i_dlarray = dlarray(单(i),'SSCB');

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

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

    显示图像和分类结果。

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

    以保存的模型格式导入预先训练好的TensorFlow网络Dagnetwork.对象,并使用导入的网络对图像进行分类。导入的网络包含不支持转换为内置MATLAB层的层。万博1manbetx当您导入这些层时,软件会自动生成自定义层。

    此示例使用辅助功能findCustomLayers。要查看此功能的代码,请参阅助手功能

    指定模型文件夹。

    如果〜存在('digitsdagnetwithnoise'“dir”)解压缩('digitsdagnetwithnoise.zip'结尾modeldolder ='./digitsdagnetwithnoise';

    指定类名。

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

    以保存的模型格式导入TensorFlow网络。默认情况下,importTensorFlowNetwork将网络作为一个导入Dagnetwork.目的。指定图像分类问题的输出层类型。

    net = importtensorflownetwork(modeldolder,“OutputLayerType”'分类''课程'类名);
    导入保存的模型…翻译模型可能需要几分钟……完成翻译。装配网络……导入完成。

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

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

    Ind = findcustomlayers(net.layers,'+ digitsdagnetwithnoise');Net.Layers(Ind)
    ANS = 2×1层阵列带图层:1'Gaussian_Noise_1'Gaussiannoise DigitsDagnetWithNoise.kgaussianNoise1Layer3766 2'Gaussian_Noise_2'Gaussiannoise DigitsDagnetWithNoise.KgaussianNoise2Layer3791

    绘制网络架构。

    情节(净)标题('DAG网络架构'

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

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

    使用佩带的网络对图像进行分类。

    标签=分类(净,我);

    显示图像和分类结果。

    imshow (I)标题(['分类结果'Char(标签)])

    助手功能

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

    功能indices = findcustomlayers(图层,packageName)s =什么(['。\'包裹名字]);索引=零(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.包含层图架构和培训选项(例如,优化器、损失和度量)。

    • 子文件夹变量包含预先磨碎的Tensorflow网络学习的权重。默认情况下,importTensorFlowNetwork进口权重。

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

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

    例子:'Mobilenet'

    例子:'./mobilenet'

    名称值对参数

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

    例子:importTensorFlowNetwork (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)导入网络modeldolder.作为一个Dagnetwork.对象,保存包中的自动生成的自定义图层+ Modelogrer.在当前文件夹中,将分类输出层附加到导入的网络架构的末尾。

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

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

    包裹+包裹名字还可以包含子包装+ ops.,其中包含Tensorflow运算符,用于自动生成的自定义图层。importTensorFlowNetwork在单独的情况下保存每个运算符的关联的MATLAB函数.m文件在子包中+ ops.。对象功能dlnetwork, 如那个预测函数,在与自定义图层交互时使用这些运算符。

    例子:'packagename','mobilenet'

    例子:'packagename','customlayers'

    目标类型的深层学习工具箱网络,指定为'dagnetwork'要么'dlnetwork'

    • 指定'targetnetwork.作为'dagnetwork'将网络导入ASDagnetwork.目的。在这种情况下,必须包含由TensorFlow保存的模型丢失函数或名称值参数指定的输出层“OutputLayerType”

    • 指定'targetnetwork.作为'dlnetwork'将网络导入ASdlnetwork目的。在这种情况下,不包括输出层。

    例子:“TargetNetwork”、“dlnetwork”

    输出层的类型importTensorFlowNetwork附加到导入的网络架构的末尾,指定为'分类''回归', 要么'pixelclassification'。附加A.PixelclassificationLayer.(电脑视觉工具箱)对象需要计算机视觉工具箱™。

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

    • 如果您指定'targetnetwork'作为'dlnetwork'importTensorFlowNetwork忽略名称值参数“OutputLayerType”。一种dlnetwork对象没有输出层。

    例子:'outputlayertype','分类'

    网络的输入图像的大小,指定为对应的两个或三个数值的向量[高度宽度]对于灰度图像和[高度,宽度,频道]为彩色图像,分别。网络使用这些信息时saved_model.pb.文件中modeldolder.不指定输入大小。

    例子:'imageInputsize',[28]

    输出层的类,指定为分类向量,字符串阵列,字符向量的单元格数组,或'汽车'。如果指定字符串数组或字符向量数组str., 然后importTensorFlowNetwork设置输出层的类别分类(str,str)。如果班级'汽车', 然后importTensorFlowNetwork设置课程分类(1:n), 在哪里N是课程的数量。

    • 如果您指定'targetnetwork'作为'dagnetwork'importTensorFlowNetwork在输出层中存储有关类的信息Dagnetwork.目的。

    • 如果您指定'targetnetwork'作为'dlnetwork'importTensorFlowNetwork忽略名称值参数'课程'。一种dlnetwork对象没有输出层来存储类上的信息。

    例子:'classes',{'0','1','3'}

    例子:'课程',分类({'dog','cat'})

    数据类型:字符|分类|细绳|细胞

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

    例子:'verbose','真实'

    输出参数

    全部收缩

    预训练的tensorflow网络,作为一个返回Dagnetwork.要么dlnetwork目的。

    • 指定'targetnetwork.作为'dagnetwork'将网络导入ASDagnetwork.目的。在这一点Dagnetwork.对象,您可以通过使用该标签来预测类标签分类功能。

    • 指定'targetnetwork.作为'dlnetwork'将网络导入ASdlnetwork目的。在这一点dlnetwork对象,您可以通过使用该标签来预测类标签预测功能。将输入数据指定为adlarray.使用正确的数据格式(有关更多信息,请参阅FMT.的观点dlarray.)。

    限制

    • importTensorFlowNetwork万博1manbetx支持Tensorflow版本v2.0,v2.1,v.2.2和v2.3。

    更多关于

    全部收缩

    纹orflow.-keras层支持转换为内置万博1manbetx马铃薯层数

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

    Tensorflow-keras层 相应的深层学习工具箱层
    添加 附加学者

    激活,激活名称:

    • “elu”

    • 'relu'

    • '线性'

    • 'softmax'

    • 'sigmoid'

    • '嗖嗖'

    • 'tanh'

    层:

    高级激活:

    • elu.

    • softmax.

    • leakyrelu.

    • prelu.*

    层:

    普通Pooling2d. averagePooling2dLayerpaddingsvalue.指定为'意思'
    Batchnormalization BatchnormalizationLayer.
    双向(LSTM (__)) Bilstmlayer.
    衔接 深度扫描层
    Conv2d. Convolution2Dlayer.
    conv2dtranspose. TransposedConv2dlayer.
    Cudnngru 格拉勒
    Cudnnlstm. lstmLayer
    稠密 全康统计层
    Depthwiseconv2d. groupedconvolution2dlayer.
    辍学 DropoutLayer.
    嵌入 WordembeddingLayer.(文本分析工具箱)
    扁平 nnet.keras.layer.flattencstylayer.
    globalaveragepooling2d. GlobalaveragePooling2dlayer.
    GlobalMaxPooling2d. globalmaxpooling2dlayer.
    gru. 格拉勒
    输入 imageInputlayer.sequenceInputlayer., 要么featureInputLayer
    LSTM. lstmLayer
    maxpooling2d. maxpooling2dlayer.
    多功能层
    separableconv2d. groupedconvolution2dlayer.要么Convolution2Dlayer.
    划分 SequenceFoldingLayer.在包装层之前,和sequencfoldinglayer.包装层后
    Upsampling2d. resize2dlayer.(图像处理工具箱)
    Upsampling3d. resize3dLayer(图像处理工具箱)
    Zeropaddding2d. nnet.keras.layer.ZeroPadding2DLayer

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

    万博1manbetx支持的纹orflow.-keras损失功能

    importTensorFlowNetwork万博1manbetx支持以下Keras丢失功能:

    • mean_squared_error.

    • patporical_crossentropy.

    • sparse_categorical_crossentropy.

    • binary_crossentropy.

    提示

    • 如果导入的网络包含不支持转换成内置MATLAB层的图层(请参阅万博1manbetxTensoRFlow-Keras层支持转换为内置万博1manbetxMatlab层) 和importTensorFlowNetwork那时不会生成自定义图层importTensorFlowNetwork返回错误。在这种情况下,您仍然可以使用importtensorflowlayers.导入网络架构。

    • importTensorFlowNetwork可以导入使用TensorFlow-KERAS顺序或功能API创建的TensorFlow网络。

    • 要使用预测或传输在新图像上的预测或传输学习的预测网络,您必须以相同的方式预处理图像用于培训导入模型的图像是预处理的。最常见的预处理步骤正在调整图像的大小大小,减去图像平均值,并将图像从BGR图像转换为RGB。

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

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

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

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

    替代功能

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

    参考文献

    [1]纹orflow.https://www.tensorflow.org/

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

    在R2021A介绍