进口层TensorFlow网络
从文件夹返回TensorFlow™网络的层lgraph
=导入器流层(modeldolder.
)modeldolder.
该函数可以导入用TensorFlow- keras顺序或函数API创建的TensorFlow网络。输入流层
导入中定义的图层saved_model.pb
文件中包含的文件和学习的权重变量
子文件夹,并返回lgraph
作为一个LayerGraph
对象。
输入流层
要求用于张量流模型的深度学习工具箱™转换器金宝app支持包。如果没有安装此支金宝app持包,则输入流层
提供下载链接。
请注意
输入流层
尝试在导入自定义Tensorflow层或软件无法将TensorFlow层转换为同等内置MATLAB时生成自定义层®图层。有关软件支持转换的图层列表,请参阅金宝app支持转换为内置MATLAB层的TensoRFLO金宝appW-KERAS层.
输入流层
在包中保存生成的自定义层和关联的TensorFlow操作符+
.modeldolder.
输入流层
不会为不支持转换为内置MATLAB层的每个TensorFlow图层自动生成自定义图层。金宝app有关如何处理不受支持的图层的更多信息,请参阅金宝app提示.
使用由一个或多个名称-值参数指定的附加选项从TensorFlow网络导入层和权重。例如,lgraph
=导入器流层(modeldolder.
,名称,值
)“OutputLayerType”、“分类”
在导入的网络体系结构的末尾附加分类输出层。
Dagnetwork.
以保存的模型格式导入预先训练好的TensorFlow网络LayerGraph
对象。然后,将导入的图层组装成一个Dagnetwork.
对象,并使用组装的网络对图像进行分类。
指定模型文件夹。
如果~存在(“digitsDAGnet”,“dir”)解压('digitsdagnet.zip')结束模型文件夹=”。/ digitsDAGnet ';
指定类名。
类名={' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,输入流层
将网络导入为LayerGraph
对象与a兼容Dagnetwork.
对象。指定图像分类问题的输出层类型。
lgraph=导入传感器FlowLayers(modelFolder,“OutputLayerType”,“分类”)
正在导入保存的模型…正在翻译模型,这可能需要几分钟…已完成翻译。
lgraph=LayerGraph,属性为:层:[13×1 nnet.cnn.layer.layer]连接:[13×2表]输入名称:{'input_1'}输出名称:{'ClassificationLayer_activation_1'}
显示导入网络的最后一层。输出显示输入流层
附加一个分类输出层
到网络架构的末尾。
lgraph.Layers(结束)
名称:'ClassificationLayer_activation_1' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
分类层不包含类,因此在组装网络之前必须指定这些类。如果不指定类,则软件会自动将这些类设置为1
,2
, ...,N
哪里N
为类数。
分类层具有名称“分类层\激活\ 1”
.将课程设置为一会
然后用新的分类层替换导入的分类层。
粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“分类层\激活\ 1”、粘土);
使用层图assembleNetwork
返回一个Dagnetwork.
对象。
净= 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 (“内特”),“nndemos”,“nndatasets”,“DigitDataset”);i = imread(fullfile(digitdatasetpath,“5”,'image4009.png'));
使用导入的网络对图像进行分类。
标签=分类(净,我);
显示图像和分类结果。
imshow (I)标题([的分类结果一会{标签}])
dlnetwork
以保存的模型格式导入预先训练好的TensorFlow网络LayerGraph
对象与a兼容dlnetwork
对象。然后,转换LayerGraph
对象一个dlnetwork
对图像进行分类。
指定模型文件夹。
如果~存在(“digitsDAGnet”,“dir”)解压('digitsdagnet.zip')结束模型文件夹=”。/ digitsDAGnet ';
指定类名。
类名={' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
导入TensorFlow网络作为层兼容dlnetwork
对象。
lgraph=导入传感器FlowLayers(modelFolder,“TargetNetwork”,“dlnetwork”)
正在导入保存的模型…正在翻译模型,这可能需要几分钟…已完成翻译。
LAPHR =具有属性的分层图:图层:[12×1 nnet.cnn.layer.layer]连接:[12×2表]输入名称:{'input_1'}输出名:{1×0小区}
读取要对图像进行分类和显示图像大小的图像。图像是具有尺寸为28×28像素的灰度(单通道)图像。
digitDatasetPath = fullfile (toolboxdir (“内特”),“nndemos”,“nndatasets”,“DigitDataset”);i = imread(fullfile(digitdatasetpath,“5”,'image4009.png'));尺寸(i)
ans =1×228日28日
将导入的图层图转换为dlnetwork
对象。
dlnet = dlnetwork (lgraph);
显示网络的输入大小。在本例中,图像大小与网络输入大小匹配。如果它们不匹配,您必须使用imresize(I,网络输入大小(1:2))
.
dlnet.Layers(1).输入大小
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
对象。然后,将导入的图层组装成一个Dagnetwork.
对象。导入的网络包含不支持转换为内置MATLAB层的层。金宝app当您导入这些层时,软件会自动生成自定义层。
此示例使用辅助功能findCustomLayers
.要查看此函数的代码,请参见Helper函数.
指定模型文件夹。
如果~存在(“digitsDAGnetwithnoise”,“dir”)解压(“digitsDAGnetwithnoise.zip”)结束模型文件夹=”。/ digitsDAGnetwithnoise ';
指定类名。
类名={' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,输入流层
将网络导入为LayerGraph
对象与a兼容Dagnetwork.
对象。指定图像分类问题的输出层类型。
lgraph=导入传感器FlowLayers(modelFolder,“OutputLayerType”,“分类”);
正在导入保存的模型…正在翻译模型,这可能需要几分钟…已完成翻译。
如果导入的网络包含不支持转换为内置MATLAB层的层,则金宝app输入流层
可以自动生成自定义图层来代替这些图层。输入流层
将生成的每个自定义图层保存到单独的.m
包中的文件+ digitsdagnetwithnoise.
在当前文件夹中。
使用helper函数查找自动生成的自定义图层的索引findCustomLayers
,并显示自定义层。
ind=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
为类数。
分类层具有名称“分类层\激活\ 1”
.将课程设置为一会
然后用新的分类层替换导入的分类层。
粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,“分类层\激活\ 1”、粘土);
使用层图assembleNetwork
.函数返回Dagnetwork.
准备好用于预测的对象。
净= 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]);索引=零(1,长度(s.m));为i = 1:长度(层)为j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”s.m {j}(1:end-2)])指数(j)= i;结束结束结束结束
modeldolder.
- - - - - -TensorFlow模型文件夹的名称包含TensorFlow模型的文件夹名称,指定为字符向量或字符串标量。modeldolder.
必须在当前文件夹中,否则必须包含文件夹的完整路径或相对路径。modeldolder.
必须包含文件saved_model.pb
,以及子文件夹变量
.它也可以包含子文件夹资产
和assets.extra.
.
文件saved_model.pb
包含层图架构和培训选项(例如,优化器、损失和度量)。
子文件夹变量
包含普雷托雷富流网络学习的权重。默认情况下,输入流层
进口的权重。
子文件夹资产
包含层图可以使用的补充文件(例如,词汇表)。输入流层
不会导入文件资产
.
子文件夹assets.extra.
包含与层图共存的补充文件(例如,用户信息)。
例子:“MobileNet”
例子:'./mobilenet'
指定可选的逗号分隔的对名称,值
参数。姓名
参数名和价值
是相应的价值。姓名
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
importTensorFlowLayers (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)
从导入网络图层和权重modeldolder.
,将自动生成的自定义图层保存在包中+ Modelogrer.
在当前文件夹中,指定导入的层与Dagnetwork.
对象,并将分类输出图层附加到导入图层的末尾。
包裹名字
- - - - - -自定义层包的名称其中的包的名称输入流层
保存指定为字符向量或字符串标量的自定义图层。输入流层
保存自定义图层包+
在当前文件夹中。如果没有指定包裹名字
'包裹名字'
,然后输入流层
将自定义层保存在名为+
在当前文件夹中。有关包裹的更多信息,请参阅包创建名称空间.modeldolder.
输入流层
尝试在导入自定义Tensorflow层或软件无法将TensorFlow层转换为等效内置MATLAB层时生成自定义层。输入流层
将生成的每个自定义图层保存到单独的.m
归档+
.要查看或编辑自定义层,请打开关联的包裹名字
.m
文件。有关自定义层的更多信息,请参见深度学习自定义图层.
这个包+
还可以包含子包装包裹名字
+老年退休金
.这个子包包含与TensorFlow运算符对应的MATLAB函数(参见金宝app支持张量流算子)用于自动生成的自定义图层。输入流层
为每个操作符单独保存相关的MATLAB函数.m
子包中的文件+老年退休金
.目标函数dlnetwork
, 如那个预测
函数,在与自定义层交互时使用这些操作符。
例子:“PackageName”、“MobileNet”
例子:'packagename','customlayers'
targetnetwork.
- - - - - -深度学习工具箱网络的目标类型'dagnetwork'
(默认)|“dlnetwork”
导入网络架构的深度学习工具箱网络目标类型,具体为'dagnetwork'
或者“dlnetwork”
.
如果您指定“TargetNetwork”
作为'dagnetwork'
,所导入的网络架构兼容aDagnetwork.
对象。在本例中,导入的lgraph
必须包含由TensorFlow保存的模型损失函数或名称-值参数指定的输出层“OutputLayerType”
.
如果您指定“TargetNetwork”
作为“dlnetwork”
,所导入的网络架构兼容adlnetwork
对象。在本例中,导入的lgraph
不包含输出层。
例子:“TargetNetwork”、“dlnetwork”
导入LayerGraph
对象与a兼容dlnetwork
对象。
OutputLayerType
- - - - - -输出层类型“分类”
|“回归”
|“pixelclassification”
输出层的类型输入流层
附加到导入的网络架构的末尾,指定为“分类”
,“回归”
, 或者“pixelclassification”
.附加A.pixelClassificationLayer
(计算机视觉工具箱)对象需要计算机视觉工具箱™。
如果您指定“TargetNetwork”
作为'dagnetwork'
和保存的模型modeldolder.
如果未指定丢失函数,则必须为name value参数指定一个值“OutputLayerType”
.一个Dagnetwork.
对象必须具有输出层。
如果您指定“TargetNetwork”
作为“dlnetwork”
,输入流层
忽略name-value参数“OutputLayerType”
.一个dlnetwork
对象没有输出层。
例子:“OutputLayerType”、“分类”
ImageInputSize
- - - - - -输入图像大小网络输入图像的大小,指定为对应于[高度、宽度]
对于灰度图像和(高度、宽度、渠道)
为彩色图像,分别。网络使用这些信息时saved_model.pb
归档modeldolder.
没有指定输入大小。
例子:“ImageInputSize”,[28]
详细的
- - - - - -用于显示导入进度信息的指标真的
或者1
(默认)|假
或者0
指示符,用于在命令窗口中显示导入进度信息,以数字或逻辑形式指定1
(真的
)或0
(假
).
例子:'verbose','真'
lgraph
-网络体系结构LayerGraph
对象网络架构,作为一个LayerGraph
对象。
要使用导入的图层图进行预测,必须转换LayerGraph
对象一个Dagnetwork.
或者dlnetwork
对象。指定名称-值参数“TargetNetwork”
作为'dagnetwork'
或者“dlnetwork”
取决于预期的工作流。
输入流层
金宝app支持Tensorflow版本v2.0,v2.1,v.2.2和v2.3。
输入流层
金宝app支持以下TensorFlow-Keras层类型转换为内置MATLAB层,但有一些限制。
TensorFlow-Keras层 | 对应的深度学习工具箱层 |
---|---|
添加 |
additionLayer |
|
层: |
先进的激活:
|
层:
|
AveragePooling1D |
普通Pooling1dlayer. 与PaddingValue 指定为'意思' |
AveragePooling2D |
averagePooling2dLayer 与PaddingValue 指定为'意思' |
批处理规范化 |
BatchnormalizationLayer. |
双向(LSTM(u u)) |
Bilstmlayer. |
连接 |
depthConcatenationLayer |
Conv1D |
卷积层 |
Conv2D |
Convolution2Dlayer. |
conv2dtranspose. |
transposedconv2dlayer. |
Cudnngru |
gruLayer |
CuDNNLSTM |
第一层 |
密集的 |
fullyConnectedLayer |
DepthwiseConv2D |
groupedConvolution2dLayer |
辍学 |
oploutlayer. |
嵌入 |
字嵌入层 (文本分析工具箱) |
平 |
nnet.keras.layer.FlattleCstyleLayer |
GlobalAveragePooling1D |
globalAveragePooling1dLayer |
GlobalAveragePooling2D |
GlobalAveragePoolg2Dlayer |
GlobalMapoolD |
globalMaxPooling1dLayer |
GlobalMapool2D |
globalmaxpooling2dlayer. |
格勒乌 |
gruLayer |
输入 |
imageInputlayer. ,sequenceInputlayer. , 或者特征输入层 |
LSTM. |
第一层 |
MaxPool1D |
maxPooling1dLayer |
MaxPool2D |
maxpooling2dlayer. |
乘 |
多功能层 |
SeparableConv2D |
groupedConvolution2dLayer 或者Convolution2Dlayer. |
TimeDistributed |
sequenceFoldingLayer 在包裹层之前,然后sequenceUnfoldingLayer 包裹层后 |
UpSampling2D |
调整2D图层的大小 (图像处理工具箱) |
UpSampling3D |
调整3D图层的大小 (图像处理工具箱) |
ZeroPadding1D |
nnet.keras.layer.ZeroPadding1DLayer |
ZeroPadding2D |
nnet.keras.layer.ZeroPadding2DLayer |
*对于PReLU层,输入流层
用载体元素的平均值替换矢量值缩放参数。导入后,您可以将参数更改回向量。例如,看到导入Keras PReLU图层.
输入流层
金宝app支持以下Keras损耗功能:
均方误差
categorical_crossentropy
sparse_categorical_crossentropy.
binary_crossentropy.
输入流层
金宝app支持以下Tensorflow运算符以转换为MATLAB功能dlarray
金宝app支持。
TensorFlow运营商 | 相应的MATLAB函数 |
---|---|
添加 |
tfAdd |
AddN |
tfaddn. |
AddV2 |
tfAdd |
AvgPool |
tfAvgPool |
BatchMatMulV2 |
tfbatchmatmulv2. |
比亚萨德 |
tfBiasAdd |
BroadcastTo |
广播 |
投 |
tfCast |
ConcatV2 |
tfCat |
常量 |
无(转换为自定义层中的权重) |
Conv2D |
tfConv2D |
堤防 |
depthToSpace (图像处理工具箱) |
DepthwiseConv2dNative |
tfdepthwiseconv2d. |
费用 |
经验 |
fusedbatchnormv3. |
tfBatchnorm |
GatherV2 |
tfGather |
身份 |
无(转换为自定义图层中的值指定) |
IdentityN |
tfIdentityN |
L2Loss |
tfL2Loss |
LeakyRelu |
leakyrelu |
较少的 |
LT. ,< |
日志 |
日志 |
马特穆尔 |
TFMATMUL. |
马克斯普尔 |
tfMaxPool |
最大限度 |
TF最大值 |
的意思是 |
TFmean. |
最低 |
tfMinimum |
镜垫 |
tfMirrorPad |
Mul |
TFMUL. |
负的 |
减 ,- |
盒 |
tfStack |
垫 |
tfPad |
PADV2. |
tfPad |
分区呼叫 |
无(在自定义层方法中转换为函数) |
战俘 |
权力 ,.^ |
刺激 |
tfProd |
RandomStandardNormal |
tfRandomStandardNormal |
范围 |
tfRange |
ReadVarifepop. |
无(转换为自定义图层中的值指定) |
READIV. |
TFDIV |
线性整流函数(Rectified Linear Unit) |
雷卢 |
Relu6 |
雷卢 和闵 |
重塑 |
tfReshape |
ResizeNearestNeighbor |
dlresize. (图像处理工具箱) |
Rsqrt |
√6 |
形状 |
tfShape |
乙状结肠 |
乙状结肠 |
Softmax |
softmax. |
SpaceToDepth |
空间深度 (图像处理工具箱) |
广场 |
. ^ 2 |
√6 |
√6 |
平方差 |
TFMUL. 或者tfSub |
挤压 |
挤压 |
StatefulPartitionedCall |
无(在自定义层方法中转换为函数) |
StopGradient |
tfStopGradient |
stridingslice |
Tfstridslice 或者挤压 |
亚 |
tfSub |
双曲正切 |
双曲正切 |
瓦 |
tfTile |
转置 |
排列 |
以获取有关操作的函数的更多信息dlarray
对象,看到支持dlarray的函数列表金宝app.
输入流层
没有在GPU上执行。然而,输入流层
进口普雷雷尼神经网络的层以获得深度学习作为一个LayerGraph
对象,可以在GPU上使用。
转换导入LayerGraph
对象一个Dagnetwork.
对象的使用assembleNetwork
.在Dagnetwork.
对象,然后可以使用分类
.使用名称值参数指定硬件要求ExecutionEnvironment
.对于具有多个输出的网络,请使用预测
函数并指定名称值参数返回分类
作为真的
.
转换导入LayerGraph
对象一个dlnetwork
对象的使用dlnetwork
.在dlnetwork
对象,然后可以使用预测
.这个函数预测
如果输入数据或网络参数存储在GPU上,则在GPU上执行。
你可以训练进口的LayerGraph
在CPU或GPU上使用trainNetwork
.要指定培训选项,包括执行环境的选项,请使用培训选项
函数。使用名称值参数指定硬件要求ExecutionEnvironment
.有关如何加速培训的更多信息,请参阅在GPU上并在GPU上并在云中扩大深度学习.
使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU版金宝app本支持(并行计算工具箱).
如果导入的网络包含不支持转换为内置MATLAB层的层(参见金宝app支持转换为内置MATLAB层的TensoRFLO金宝appW-KERAS层)及输入流层
不会自动生成自定义图层,则输入流层
将占位符层插入到代替不支持的层。金宝app要查找网络中不受支持的图层的名称和指标,请使用金宝appfindPlaceholderLayers
作用然后,可以使用定义的新图层替换占位符图层。要替换图层,请使用replaceLayer
.
要使用预先训练的网络对新图像进行预测或迁移学习,必须以与用于训练导入模型的图像的预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小,减去图像平均值,以及将图像从BGR图像转换为RGB图像。
有关为训练和预测而预处理图像的详细信息,请参见深度学习的图像预处理.
包裹的成员+
(如果包父文件夹不在Matlab路径上,则无法访问(自定义图层和TensoRFlow运算符)。有关更多信息,请参阅软件包与MATLAB路径.包裹名字
用importTensorFlowNetwork
或者输入流层
以保存的模型格式导入TensorFlow网络[2].或者,如果网络是HDF5或JSON格式,则使用进口卡拉斯网络
或者进口卡拉斯层
导入网络。
[1]TensorFlow.https://www.tensorflow.org/.
[2]使用SavedModel格式.https://www.tensorflow.org/guide/saved_model.
进口卡拉斯层
|进口卡拉斯网络
|进口网络
|importONNXLayers
|exportONNXNetwork
|进口咖啡机
|importCaffeNetwork
|importONNXFunction
|分层图
|assembleNetwork
|findPlaceholderLayers
|replaceLayer
|importTensorFlowNetwork
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドを MATLABコマンド ウィンドウに入力して実行してください。网状物ブラウザーは MATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。