进口层TensorFlow网络
从文件夹返回TensorFlow™网络的层lgraph
= importTensorFlowLayers (模型文件夹
)模型文件夹
该函数可以导入用TensorFlow- keras顺序或函数API创建的TensorFlow网络。importTensorFlowLayers
导入在中定义的图层saved_model.pb
文件中所包含的学习权重变量
子文件夹,并返回lgraph
作为一个LayerGraph
对象。
importTensorFlowLayers
要求用于张量流模型的深度学习工具箱™转换器金宝app支持包。如果没有安装此支金宝app持包,则importTensorFlowLayers
提供下载链接。
请注意
importTensorFlowLayers
当导入自定义TensorFlow层或软件无法将TensorFlow层转换为等效的内置MATLAB时,尝试生成自定义层®层。有关软件支持转换的层的列表,请参见金宝app支持TensorFlow Keras层转换为内置金宝appMATLAB层.
importTensorFlowLayers
将生成的自定义图层和关联的TensorFlow操作符保存在包中+
.模型文件夹
importTensorFlowLayers
不会为每个不支持转换为内置MATLAB层的TensorFlow层自动生成自定义层。有关如何处理不支持层的更多信息,请参阅金宝app提示.
达格网络
以保存的模型格式导入预先训练好的TensorFlow网络LayerGraph
对象然后,将导入的层组装到达格网络
对象,并利用组合网络对图像进行分类。
指定模型文件夹。
如果~ (“digitsDAGnet”,“dir”)解压缩(“digitsDAGnet.zip”)结束modelFolder =”。/ digitsDAGnet ';
指定类名。
一会= {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,importTensorFlowLayers
将网络导入为LayerGraph
对象与达格网络
对象。指定图像分类问题的输出层类型。
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(结束)
名称:'ClassificationLayer_activation_1' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
分类层不包含类,因此必须在组装网络之前指定这些类。如果不指定类,则软件会自动将类设置为1
,2
、……N
,在那里N
为类数。
分类层的名称为“ClassificationLayer_activation_1”
.将课程设置为一会
然后用新的分类层替换导入的分类层。
粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“ClassificationLayer_activation_1”、粘土);
使用assembleNetwork
返回一个达格网络
对象。
净= assembleNetwork (lgraph)
net = DAGNetwork with properties: Layers: [13×1 net.cnn.layer. layer] Connections: [13×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}
阅读要分类的图像。
digitDatasetPath = fullfile (toolboxdir (“nnet”),“nndemos”,“nndatasets”,“DigitDataset”); I=imread(完整文件(digitDatasetPath,“5”,“image4009.png”));
使用导入的网络对图像进行分类。
标签=分类(净,我);
显示图像和分类结果。
imshow (I)标题([的分类结果一会{标签}])
dlnetwork
以保存的模型格式导入预先训练好的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 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”); I=imread(完整文件(digitDatasetPath,“5”,“image4009.png”)); 尺寸(I)
ans =1×228日28日
将导入的层图转换为dlnetwork
对象。
dlnet = dlnetwork (lgraph);
显示网络的输入大小。在本例中,图像大小与网络输入大小匹配。如果它们不匹配,您必须使用imresize(我netInputSize (1:2))
.
dlnet.Layers (1) .InputSize
ans =1×328日28日1
将图像转换为dlarray
.用尺寸格式化图像“SSCB”
(spatial, spatial, channel, batch)。在本例中,批大小为1,您可以省略它(SSC的
).
I_dlarray=dlarray(单个(I),“SSCB”);
对样本图像进行分类并找到预测的标签。
概率=预测(dlnet I_dlarray);[~,标签]= max(概率);
显示图像和分类结果。
imshow (I)标题([的分类结果一会{标签}])
以保存的模型格式导入预先训练好的TensorFlow网络LayerGraph
对象然后,将导入的层组装到达格网络
对象。导入的网络包含不支持转换为内置MATLAB层的层。金宝app当您导入这些层时,软件会自动生成自定义层。
本例使用helper函数findCustomLayers
.要查看此函数的代码,请参见Helper函数.
指定模型文件夹。
如果~ (“digitsDAGnetwithnoise”,“dir”)解压缩(“digitsDAGnetwithnoise.zip”)结束modelFolder =”。/ digitsDAGnetwithnoise ';
指定类名。
一会= {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,importTensorFlowLayers
将网络导入为LayerGraph
对象与达格网络
对象。指定图像分类问题的输出层类型。
lgraph = importTensorFlowLayers (modelFolder,“OutputLayerType”,“分类”);
导入保存的模型…翻译模型可能需要几分钟……完成翻译。
如果导入的网络包含不支持转换为内置MATLAB层的层,则金宝appimportTensorFlowLayers
可以自动生成自定义图层来代替这些图层。importTensorFlowLayers
将每个生成的自定义层保存为单独的.m
包中的文件+数字噪声
在当前文件夹中。
使用helper函数查找自动生成的自定义层的索引findCustomLayers
,并显示自定义层。
印第安纳州= findCustomLayers (lgraph。层,' + digitsDAGnetwithnoise ');lgraph.Layers(印第安纳州)
ans=2×1层阵列,带层:1'高斯噪声\u 1'高斯噪声digitsDAGnetwithnoise.kgAussianNoise1层3766 2'高斯噪声\u 2'高斯噪声digitsDAGnetwithnoise.kgAussianNoise2层3791
分类层不包含类,因此必须在组装网络之前指定这些类。如果不指定类,则软件会自动将类设置为1
,2
、……N
,在那里N
为类数。
分类层的名称为“ClassificationLayer_activation_1”
.将课程设置为一会
然后用新的分类层替换导入的分类层。
粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“ClassificationLayer_activation_1”、粘土);
使用assembleNetwork
.函数返回达格网络
准备用于预测的对象。
净= assembleNetwork (lgraph)
net = DAGNetwork with properties: Layers: [15×1 net.cnn.layer. layer] Connections: [15×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}
Helper函数
本节提供helper函数的代码findCustomLayers
在这个例子中使用。findCustomLayers
返回指数
自定义层的importTensorFlowNetwork
自动生成。
函数index = findCustomLayers(layers,PackageName) s = what([‘。’PackageName]);指数= 0(1、长度(小);为i = 1:长度(层)为j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”s、 m{j}(1:end-2)]指数(j)=i;结束结束结束结束
模型文件夹
- - - - - -TensorFlow模型文件夹的名称包含TensorFlow模型的文件夹名称,指定为字符向量或字符串标量。模型文件夹
必须在当前文件夹中,否则必须包含文件夹的完整路径或相对路径。模型文件夹
必须包含文件saved_model.pb
,以及子文件夹变量
. 它还可以包含子文件夹资产
和assets.extra
.
档案saved_model.pb
包含层图架构和培训选项(例如,优化器、损失和度量)。
子文件夹变量
包含由预训练TensorFlow网络学习的权重。默认情况下,importTensorFlowLayers
进口的权重。
子文件夹资产
包含层图可以使用的补充文件(例如,词汇表)。importTensorFlowLayers
不在中导入文件资产
.
子文件夹assets.extra
包含与层图共存的补充文件(例如,用户信息)。
例子:“MobileNet”
例子:“./MobileNet”
指定可选的逗号分隔的对名称,值
参数。名称
参数名和价值
是对应的值。名称
必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家
.
importTensorFlowLayers (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)
从中导入网络层和权重模型文件夹
,在包中保存自动生成的自定义层+模型文件夹
在当前文件夹中,指定导入的层与达格网络
对象,并将分类输出层附加到导入层的末尾。
包装名称
- - - - - -自定义层包的名称其中的包的名称importTensorFlowLayers
保存自定义层,指定为字符向量或字符串标量。importTensorFlowLayers
保存自定义层包+
在当前文件夹中。如果没有指定包装名称
“包装名称”
,然后importTensorFlowLayers
将自定义层保存在名为+
在当前文件夹中。有关包的详细信息,请参阅包创建名称空间.模型文件夹
importTensorFlowLayers
当导入自定义TensorFlow层或软件无法将TensorFlow层转换为等效的内置MATLAB层时,尝试生成自定义层。importTensorFlowLayers
将每个生成的自定义层保存为单独的.m
文件中+
.要查看或编辑自定义层,请打开关联的包装名称
.m
文件。有关自定义层的更多信息,请参见深度学习自定义图层.
这个包+
也可以包含子包包装名称
+行动
.这个子包包含与TensorFlow运算符对应的MATLAB函数(参见金宝app支持TensorFlow运营商)在自动生成的自定义图层中使用的。importTensorFlowLayers
为每个操作符单独保存相关的MATLAB函数.m
文件在子包中+行动
.的对象函数dlnetwork
,例如预测
函数,在与自定义层交互时使用这些操作符。
例子:“PackageName”、“MobileNet”
例子:“PackageName”、“CustomLayers”
目标网络
- - - - - -深度学习工具箱网络的目标类型“达格网络”
(默认)|“dlnetwork”
导入网络架构的深度学习工具箱网络目标类型,具体为“达格网络”
或“dlnetwork”
.
如果您指定“TargetNetwork”
作为“达格网络”
,所导入的网络架构兼容a达格网络
对象。在本例中,导入的lgraph
必须包含由TensorFlow保存的模型损失函数或名称-值参数指定的输出层“OutputLayerType”
.
如果您指定“TargetNetwork”
作为“dlnetwork”
,所导入的网络架构兼容adlnetwork
对象。在本例中,导入的lgraph
不包括输出层。
例子:“TargetNetwork”、“dlnetwork”
进口LayerGraph
对象与dlnetwork
对象。
OutputLayerType
- - - - - -输出层类型“分类”
|“回归”
|“pixelclassification”
输出层的类型importTensorFlowLayers
附加到导入的网络架构的末尾,指定为“分类”
,“回归”
或“pixelclassification”
. 附加pixelClassificationLayer
(计算机视觉工具箱)对象需要计算机视觉工具箱™。
如果您指定“TargetNetwork”
作为“达格网络”
和保存的模型模型文件夹
不指定损失函数,必须为name-value参数赋值“OutputLayerType”
.一个达格网络
对象必须有一个输出层。
如果您指定“TargetNetwork”
作为“dlnetwork”
,importTensorFlowLayers
忽略name-value参数“OutputLayerType”
.一个dlnetwork
对象没有输出层。
例子:“OutputLayerType”、“分类”
ImageInputSize
- - - - - -输入图像大小网络输入图像的大小,指定为两个或三个数值对应的向量(高度、宽度)
对于灰度图像和(高度、宽度、渠道)
为彩色图像,分别。网络使用这些信息时saved_model.pb
文件中模型文件夹
没有指定输入大小。
例子:“ImageInputSize”,[28 28]
详细的
- - - - - -用于显示导入进度信息的指示器符合事实的
或1
(默认)|假
或0
指示符,用于在命令窗口中显示导入进度信息,以数字或逻辑形式指定1
(符合事实的
)或0
(假
).
例子:"详细","真实"
lgraph
——网络体系结构LayerGraph
对象网络架构,作为一个LayerGraph
对象。
要使用导入的层图进行预测,必须将LayerGraph
对象一个达格网络
或dlnetwork
对象。指定名称-值参数“TargetNetwork”
作为“达格网络”
或“dlnetwork”
取决于预期的工作流。
importTensorFlowLayers
金宝app支持TensorFlow版本v2.0、v2.1、v.2.2和v2.3。
importTensorFlowLayers
金宝app支持以下TensorFlow-Keras层类型转换为内置MATLAB层,但有一些限制。
TensorFlow-Keras层 | 对应的深度学习工具箱层 |
---|---|
添加 |
additionLayer |
|
层: |
先进的激活:
|
层:
|
AveragePooling1D |
averagePooling1dLayer 与PaddingValue 指定为“中庸” |
AveragePooling2D |
averagePooling2dLayer 与PaddingValue 指定为“中庸” |
BatchNormalization |
批处理规范化层 |
双向(LSTM (__)) |
双层膜 |
连接 |
depthConcatenationLayer |
Conv1D |
convolution1dLayer |
Conv2D |
卷积层 |
Conv2DTranspose |
转置层 |
库德宁格鲁 |
gruLayer |
CuDNNLSTM |
lstmLayer |
密集的 |
fullyConnectedLayer |
DepthwiseConv2D |
groupedConvolution2dLayer |
辍学 |
落花人 |
嵌入 |
wordEmbeddingLayer (文本分析工具箱) |
平 |
nnet.keras.layer.FlattenCStyleLayer |
全球平均池1d |
globalAveragePooling1dLayer |
全球平均池2D |
globalAveragePooling2dLayer |
GlobalMaxPool1D |
globalMaxPooling1dLayer |
GlobalMaxPool2D |
GlobalMapooling2DLayer |
格勒乌 |
gruLayer |
输入 |
图像输入层 ,序列输入层 或featureInputLayer |
LSTM |
lstmLayer |
MaxPool1D |
maxPooling1dLayer |
MaxPool2D |
maxPooling2dLayer |
乘 |
乘法层 |
SeparableConv2D |
groupedConvolution2dLayer 或卷积层 |
TimeDistributed |
sequenceFoldingLayer 在包裹层之前,然后sequenceUnfoldingLayer 在包裹层之后 |
UpSampling2D |
resize2dLayer (图像处理工具箱) |
UpSampling3D |
resize3dLayer (图像处理工具箱) |
ZeroPadding1D |
nnet.keras.layer.ZeroPadding1DLayer |
ZeroPadding2D |
nnet.keras.layer.ZeroPadding2DLayer |
*对于PReLU层,importTensorFlowLayers
将向量值缩放参数替换为向量元素的平均值。您可以在导入后将参数更改回向量。有关示例,请参阅导入Keras PReLU图层.
importTensorFlowLayers
金宝app支持以下Keras loss功能:
mean_squared_error
categorical_crossentropy
稀疏分类交叉熵
二元交叉熵
importTensorFlowLayers
金宝app支持以下TensorFlow运算符,以便使用dlarray
金宝app支持
TensorFlow运营商 | 相应的MATLAB函数 |
---|---|
添加 |
tfAdd |
AddN |
tfAddN |
AddV2 |
tfAdd |
AvgPool |
tfAvgPool |
BatchMatMulV2 |
tfBatchMatMulV2 |
BiasAdd |
tfBiasAdd |
BroadcastTo |
tfBroadcastTo |
投 |
tfCast |
ConcatV2 |
tfCat |
常量 |
无(转换为自定义层中的权重) |
Conv2D |
tfConv2D |
深度空间 |
depthToSpace (图像处理工具箱) |
DepthwiseConv2dNative |
tfDepthwiseConv2D |
经验值 |
经验值 |
FusedBatchNormav3 |
tfBatchnorm |
GatherV2 |
tfGather |
身份 |
无(转换为自定义层的值分配) |
IdentityN |
tfIdentityN |
L2Loss |
tfL2Loss |
LeakyRelu |
leakyrelu |
较少的 |
书信电报 ,< |
日志 |
日志 |
MatMul |
tfMatMul |
MaxPool |
tfMaxPool |
最大 |
tfMaximum |
的意思是 |
tfMean |
最低限度 |
tfMinimum |
MirrorPad |
tfMirrorPad |
Mul |
tfMul |
负的 |
减 ,- |
收拾 |
tfStack |
垫 |
tfPad |
PadV2 |
tfPad |
PartitionedCall |
无(在自定义层方法中转换为函数) |
战俘 |
权力 ,.^ |
刺激 |
tfProd |
RandomStandardNormal |
tfRandomStandardNormal |
范围 |
tfRange |
ReadVariableOp |
无(转换为自定义层的值分配) |
雷亚尔迪夫 |
tfDiv |
线性整流函数(Rectified Linear Unit) |
线性整流函数(Rectified Linear Unit) |
Relu6 |
线性整流函数(Rectified Linear Unit) 和闵 |
重塑 |
tfReshape |
ResizeNearestNeighbor |
调整大小 (图像处理工具箱) |
Rsqrt |
√6 |
形状 |
tfShape |
乙状结肠 |
乙状结肠 |
Softmax |
softmax |
SpaceToDepth |
spaceToDepth (图像处理工具箱) |
广场 |
. ^ 2 |
√6 |
√6 |
SquaredDifference |
tfMul 或tfSub |
挤压 |
tfSqueeze |
StatefulPartitionedCall |
无(在自定义层方法中转换为函数) |
StopGradient |
tfStopGradient |
斯特里兹利斯 |
tfStridedSlice 或tfSqueeze |
附属的 |
tfSub |
双曲正切 |
双曲正切 |
瓦片 |
tfTile |
转置 |
交换 |
以获取有关操作的函数的更多信息dlarray
对象,看到支持dlarray的函数列表金宝app.
importTensorFlowLayers
不在GPU上执行。但是,importTensorFlowLayers
将预训练神经网络的各层导入深度学习,作为LayerGraph
对象,可以在GPU上使用。
转换导入的LayerGraph
对象一个达格网络
对象的使用assembleNetwork
.在达格网络
对象,然后可以通过使用分类
.使用name-value参数指定硬件需求ExecutionEnvironment
.对于具有多个输出的网络,使用预测
函数并指定名称-值参数ReturnCategorical
作为符合事实的
.
转换导入的LayerGraph
对象一个dlnetwork
对象的使用dlnetwork
.在dlnetwork
对象,然后可以通过使用预测
.这个函数预测
如果输入数据或网络参数存储在GPU上,则在GPU上执行。
如果你使用minibatchqueue
对小批量输入数据进行处理和管理minibatchqueue
对象默认将输出转换为GPU阵列(如果有GPU可用)。
使用dlupdate
转换a的可学习参数dlnetwork
对象到GPU阵列。
dlnet = dlupdate (@gpuarray dlnet)
你可以训练进口的LayerGraph
在CPU或GPU上使用trainNetwork
.要指定培训选项,包括执行环境的选项,请使用培训选项
作用使用name-value参数指定硬件要求ExecutionEnvironment
. 有关如何加快培训的更多信息,请参阅在gpu和云上并行扩展深度学习.
使用GPU需要并行计算工具箱™ 以及受支持的GPU设备。有关支持的设备的信息,请参阅金宝appGPU支金宝app持情况(并行计算工具箱).
如果导入的网络包含不支持转换为内置MATLAB层的层(参见金宝app支持TensorFlow Keras层转换为内置金宝appMATLAB层),importTensorFlowLayers
不自动生成自定义层,那么importTensorFlowLayers
插入占位符层以替换不受支持的层。若要查找网络中不受支持层的名称和索引,请使用金宝appfindPlaceholderLayers
函数。然后,您可以将占位符层替换为您定义的新层。要替换一个图层,请使用replaceLayer
.
要使用预先训练的网络对新图像进行预测或迁移学习,必须以与用于训练导入模型的图像的预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小,减去图像平均值,以及将图像从BGR图像转换为RGB图像。
有关用于训练和预测的预处理图像的更多信息,请参见深度学习的图像预处理.
一揽子计划的成员+
如果包父文件夹不在MATLAB路径上,则无法访问(自定义层和TensorFlow操作符)。有关更多信息,请参阅软件包和MATLAB路径.包装名称
使用importTensorFlowNetwork
或importTensorFlowLayers
以保存的模型格式导入TensorFlow网络的步骤[2].或者,如果网络是HDF5或JSON格式,则使用importKerasNetwork
或importKerasLayers
导入网络。
[1]TensorFlow.https://www.tensorflow.org/.
[2]使用SavedModel格式.https://www.tensorflow.org/guide/saved_model.
importKerasLayers
|importKerasNetwork
|importONNXNetwork
|importONNXLayers
|exportONNXNetwork
|importCaffeLayers
|importCaffeNetwork
|importONNXFunction
|分层图
|assembleNetwork
|findPlaceholderLayers
|replaceLayer
|importTensorFlowNetwork
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。