主要内容

exportNetworkToTensorFlow

出口深度学习工具箱网络或层图TensorFlow

自从R2022b

描述

例子

exportNetworkToTensorFlow (,modelPackage)MATLAB的出口®深入学习网络并将其保存为一个TensorFlow™模型在Python®modelPackage。信息如何加载TensorFlow模型在Python中,看到的负载输出TensorFlow模型

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

例子

exportNetworkToTensorFlow (lgraph,modelPackage)出口MATLAB深度学习层图lgraph并将其保存为一个TensorFlow模型在Python包modelPackage

如果MATLAB网络或层图包含自定义或内置MATLAB层exportNetworkToTensorFlow不能转换为一个TensorFlow层,exportNetworkToTensorFlow函数出口这一层作为一个自定义TensorFlow层。MATLAB层的更多信息exportNetworkToTensorFlow可以转换为TensorFlow层,看到了吗TensorF金宝applow层支持出口。例如,看到的出口与自定义层TensorFlow层图

例子

全部折叠

拯救一个MATLAB作为TensorFlow深入学习网络模型使用exportNetworkToTensorFlow函数。

下载和安装的深度学习工具箱转换器TensorFlow模型支持包。金宝app您可以输入exportNetworkToTensorFlow在命令提示符处,检查是否支持包安装。金宝app如果支持包没有金宝app安装,那么该函数提供了一个链接到需要在插件浏览器支持包。安装支持包,单击该链接,然后单金宝app击安装

加载pretrainedsqueezenet卷积神经网络作为一个DAGNetwork对象。

网= squeezenet
网= DAGNetwork属性:层:x1 nnet.cnn.layer.Layer[68]连接:[75 x2表]InputNames:{“数据”}OutputNames: {“ClassificationLayer_predictions”}

出口网络TensorFlow。的exportNetworkToTensorFlow函数保存TensorFlow模型在Python包myModel

exportNetworkToTensorFlow(净,“myModel”)

在Python中运行这段代码来加载TensorFlow模型导出的myModel包中。

进口myModel模型= myModel.load_model ()

TensorFlow保存导出的模型SavedModel格式。储蓄模型SavedModel格式是可选的。您可以执行直接与深度学习工作流程模型。为例,展示了如何将一个图像与出口TensorFlow模型,明白了出口网络TensorFlow和图像进行分类

model.save (“myModelTF”)

使用MATLAB网络对图像进行分类。保存网络作为TensorFlow模型并使用TensorFlow模型相同的图像进行分类。

在MATLAB图像进行分类

加载pretrainedsqueezenet卷积网络DAGNetwork对象。

网= squeezenet
网= DAGNetwork属性:层:x1 nnet.cnn.layer.Layer[68]连接:[75 x2表]InputNames:{“数据”}OutputNames: {“ClassificationLayer_predictions”}

指定类名。

一会= net.Layers . class(结束);

读你想要的图像分类。调整图像的输入规模网络。

我= imread (“peppers.png”);InputSize = net.Layers (1) .InputSize;我= imresize (Im, InputSize (1:2));

预测类标签和分类的分数。

(标签,分数)=(净,Im)进行分类;

显示图像的分类标签。

imshow (Im)标题(类名(标签),字形大小= 12)

图包含一个坐标轴对象。坐标轴对象与标题甜椒包含一个类型的对象的形象。

出口网络和图像数据

出口网络TensorFlow。的exportNetworkToTensorFlow函数保存TensorFlow模型在Python包myModel

exportNetworkToTensorFlow(净,“myModel”)

排列的二维图像数据深度学习工具箱™排序(HWCN)到TensorFlow排序(NHWC),H,W,C高度,宽度,和图像的通道数,分别和N是图片的数量。保存垫的图片文件。

ImTF =排列(Im, [4, 1, 2, 3]);文件名=“peppers.mat”;保存(文件名,“ImTF”)

与出口TensorFlow模型图像进行分类

在Python中运行这段代码来加载出口TensorFlow模型和使用模型的图像分类。

负载从Python包导出的模型myModel

进口myModel模型= myModel.load_model ()

导出模型的图像进行分类。为更多的信息关于如何比较预测结果在MATLAB和TensorFlow之间,明白了推理比较TensorFlow和进口网络图像分类

score_tf = model.predict (ImTF)

出口一个未经训练的层图TensorFlow和火车出口TensorFlow模型。

创建图层图表

创建一个长期短期记忆(LSTM)网络对序列数据进行分类。LSTM网络以序列数据作为输入,使预测基于单个时间序列数据的步骤。

inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [sequenceInputLayer inputSize bilstmLayer (numHiddenUnits OutputMode =“最后一次”)fullyConnectedLayer (numClasses) softmaxLayer];lgraph = layerGraph(层);

创建的训练数据集

加载日本元音训练数据集。XTrain是一种含有270维序列12单元阵列和可变长度。YTrain是一个分类向量的标签“1”,“2”,…”9”,对应于九个扬声器。

[XTrain, YTrain] = japaneseVowelsTrainData;

准备的序列数据XTrain填充。有关更多信息,请参见使用深度学习序列分类

numObservations =元素个数(XTrain);i = 1: numObservations = XTrain序列{};sequenceLengths (i) =(序列,2)大小;结束[sequenceLengths, idx] = (sequenceLengths)进行排序;XTrain = XTrain (idx);YTrain = YTrain (idx);

XTrain第二个维度。

XTrain = padsequences (XTrain 2);

排列的序列数据深度学习工具箱™排序(CSN)到TensorFlow排序(国家安全委员会),C的数量的特征序列,年代是序列长度,N是观测序列的数量。将训练数据保存到一个垫子文件。

XTrain =排列(XTrain (3,2,1));YTrain双(YTrain) = 1;文件名=“training_data.mat”;保存(文件名,“XTrain”,“YTrain”)

出口TensorFlow层图

导出层图lgraphTensorFlow。的exportNetworkToTensorFlow函数保存TensorFlow模型在Python包myModel

exportNetworkToTensorFlow (lgraph“myModel”)

火车出口TensorFlow模型

在Python中运行这段代码加载从Python包导出的模型myModel。你可以编译和火车在Python中导出的模型。训练模型使用训练数据training_data.mat。为更多的信息关于如何从垫文件数据加载到Python,明白了推理比较TensorFlow和进口网络图像分类

进口myModel模型= myModel.load_model ()

出口一层图,其中包含一个MATLAB定制层,TensorFlow。

创建图层图表

创建一个PReLU层通过定义自定义层preluLayer。显示自定义层的定义。

类型preluLayer.m
classdef preluLayer < nnet.layer。层% Example custom PReLU layer. properties (Learnable) % Layer learnable parameters. % Scaling coefficient. Alpha end methods function layer = preluLayer(args) % layer = preluLayer creates a PReLU layer. % % layer = preluLayer(numChannels,Name=name) also specifies the % layer name. arguments args.Name = ""; end % Set layer name. layer.Name = args.Name; % Set layer description. layer.Description = "PReLU"; end function layer = initialize(layer,layout) % layer = initialize(layer,layout) initializes the learnable % parameters of the layer for the specified input layout. % Skip initialization of nonempty parameters. if ~isempty(layer.Alpha) return end % Input data size. sz = layout.Size; ndims = numel(sz); % Find number of channels. idx = finddim(layout,"C"); numChannels = sz(idx); % Initialize Alpha. szAlpha = ones(1,ndims); szAlpha(idx) = numChannels; layer.Alpha = rand(szAlpha); end function Z = predict(layer, X) % Z = predict(layer, X) forwards the input data X through the % layer and outputs the result Z. Z = max(0, X) + layer.Alpha .* min(0, X); end end end

创建一个层图。

层= [imageInputLayer ([31 53 3], Name =“图像”归一化=“没有”)preluLayer (Name =“prelu”)regressionLayer);lgraph = layerGraph(层);

出口TensorFlow层图

导出层图lgraphTensorFlow。的exportNetworkToTensorFlow函数保存TensorFlow模型在Python包myModel和自定义层的定义customLayers文件夹的myModel包中。

exportNetworkToTensorFlow (lgraph“myModel”)
警告:一层一层“prelu”:类“preluLayer”出口到一个不完整的TensorFlow定制层文件。自定义图层定义必须完成或文件之前必须更换模型可以加载到TensorFlow。

显示TensorFlow自定义层的定义preluLayer.py

类型。/ myModel / customLayers / preluLayer.py
#这个文件是由#深学习MATLAB工具箱转换器TensorFlow模型。# 03 - 3月- 2023年09:03:13进口tensorflow tf进口sys #删除这条线完成后层定义。类preluLayer (tf.keras.layers.Layer): #添加任何额外的层号hyperparameters构造函数的参数列表如下。def __init__(自我,Alpha_Shape_ = None, name = None):超级(preluLayer,自我). __init__ (name =名称)#可学的参数:这些都是出口从MATLAB和将被自动装载重量文件:自我。α=特遣部队。变量(name =“阿尔法”,initial_value = tf.zeros (Alpha_Shape_),可训练的= True) def(自我,input1): #添加代码来实现层的传球前进。#输入张量格式(s)是:BSSC #张量的输出格式(s): B =批BSSC #, C =频道,T =时间,s =空间(的高度、宽度、深度,…)#删除以下三行完成后自定义层定义:打印(“警告:load_model():在加载模型之前,您必须完成的定义自定义层preluLayer customLayers文件夹。”)打印系统(“退出……”)。退出(见上面的警告消息。)返回output1

负载输出层图

本节描述的步骤,您必须执行在Python中加载出口TensorFlow模型。

编辑的定义preluLayer.py通过实现向前计算调用

def调用(自我,input1): output1 = tf.math.maximum (input1, 0.0) +自我。α* tf.math.minimum (0.0, input1)返回output1

删除行preluLayer.py指示的文件中的注释。查看更新自定义层preluLayer.py

进口tensorflow tf类preluLayer (tf.keras.layers.Layer): #添加任何额外的层号hyperparameters构造函数的参数列表如下。def __init__(自我,Alpha_Shape_ = None, name = None):超级(preluLayer,自我). __init__ (name =名称)#可学的参数:这些都是出口从MATLAB和将被自动装载重量文件:自我。α=特遣部队。变量(name =“阿尔法”,initial_value = tf.zeros (Alpha_Shape_),可训练的= True) def(自我,input1): output1 = tf.math.maximum (input1, 0.0) +自我。α* tf.math.minimum (0.0, input1)返回output1

在本例中,您只需要编辑preluLayer.py。在其他情况下,您可能需要编辑model.py通过自定义层调用的参数。

加载模型之前,您可能需要重新启动Python内核的更改生效。加载模型从Python包myModel

进口myModel模型= myModel.load_model ()

输入参数

全部折叠

深入学习网络工具箱,指定为一个SeriesNetwork对象,DAGNetwork对象,或dlnetwork对象。

你可以得到一个训练有素的网络:

  • 使用深度学习工具箱函数加载pretrained网络。例如,使用efficientnetb0函数。

  • 下载的pretrained网络MATLAB深学习模型中心

  • 训练你自己的网络。使用trainNetwork培养一个DAGNetworkSeriesNetwork对象。使用自定义训练循环训练dlnetwork对象。

您还可以导出一个初始化dlnetwork反对TensorFlow。

Python包的名称包含出口TensorFlow模型,指定为一个字符串标量或特征向量。的modelPackage包包含:

  • _init_.py文件,它定义了modelPackage文件夹作为常规的Python包。

  • model.py文件,其中包含的代码定义了未经训练的TensorFlow-Keras模型。

  • 固定文件,该文件提供说明如何加载TensorFlow模型并将其保存HDF5SavedModel格式。更多细节,请参阅负载输出TensorFlow模型在标准格式保存导出TensorFlow模型

  • weights.h5文件,其中包含模型的权重HDF5格式。

  • customLayers为每个导出自定义文件夹,其中包含一个文件层。每个文件都是一个不完整的定义TensorFlow定制层。您必须编辑或替换这些文件之前,您可以在Python中加载模型。该软件创建customLayers文件夹只有当MATLAB网络或层图包含一个定义或内置MATLAB层exportNetworkToTensorFlow不能转换为TensorFlow层。

例子:“myModel”

深度学习工具箱层图,指定为一个LayerGraph对象或数组中。

限制

  • 加载一个出口TensorFlow模型,您必须:

    • TensorFlow r2.0或更高版本

    • Python版本3.0或更高版本

    • TensorFlow模块组织MATLAB网络或层图,其中包含一个或多个以下层:

      • groupNormalizationLayer

      • instanceNormalizationLayer

      • layerNormalizationLayerOperationDimension设置为“batch-excluded”

更多关于

全部折叠

层支持出口金宝appTensorFlow

exportNetworkToTensorFlow函数支持这些深度学金宝app习工具箱层为出口TensorFlow层。

负载输出TensorFlow模型

本节描述如何加载TensorFlow模型在Python包modelPackage,exportNetworkToTensorFlow创建。例如,看到的出口网络TensorFlow

加载出口TensorFlow模型权重。

进口modelPackage模型= modelPackage.load_model ()

负荷模型导出的TensorFlow没有重量。

进口modelPackage模型= modelPackage.load_model (load_weights = False)

保存导出TensorFlow模型在标准格式

可选地,您可以保存导出的TensorFlow模型SavedModelHDF5格式。你必须首先加载出口TensorFlow模型遵循的指令负载输出TensorFlow模型。为例,展示了如何保存导出的模型SavedModel格式,请参阅出口网络TensorFlow

保存TensorFlow加载模型SavedModel格式。

model.save (“modelName”)

保存TensorFlow加载模型HDF5格式。

model.save (modelName save_format =“h5”)

提示

  • MATLAB使用集中的索引,而Python使用从零开始的索引。换句话说,在数组第一个元素的索引1和0在MATLAB和Python,分别。MATLAB索引的更多信息,请参阅数组索引。在MATLAB中,使用数组索引(印第安纳州)在Python中,创建数组转换为印第安纳州+ 1

版本历史

介绍了R2022b