进口pretrainedTensorFlow网络
从文件夹中导入预先训练好的TensorFlow™网络网
= importTensorFlowNetwork (modelFolder
)modelFolder
,其中包含保存的模型格式的模型(仅兼容TensorFlow 2)。该函数可以导入TensorFlow- keras顺序或函数API创建的TensorFlow网络。importTensorFlowNetwork
类中定义的层saved_model.pb
文件中所包含的学习权重变量
子文件夹,并返回网络网
作为一个DAGNetwork
或dlnetwork
对象。
importTensorFlowNetwork
要求深度学习工具箱™TensorFlow模型转换器金宝app支持包。如果没有安装此支金宝app持包,则importTensorFlowNetwork
提供下载链接。
请注意
importTensorFlowNetwork
当您导入自定义TensorFlow层或当软件无法将TensorFlow层转换为等效的内置MATLAB时,会尝试生成自定义层®层。有关软件支持转换的层的列表,请参见金宝appTensorFlow-Keras层支持转换为内置金宝appMATLAB层.
importTensorFlowNetwork
将生成的自定义层和相关的TensorFlow操作符保存在包中+
.modelFolder
importTensorFlowNetwork
它不会为不支持转换为内置MATLAB层的每个TensorFlow层自动生成自定义层。金宝app有关如何处理不受支持的层的更多信息,请参见金宝app提示.
导入预先训练好的TensorFlow网络,使用一个或多个名称-值参数指定的附加选项。例如,网
= importTensorFlowNetwork (modelFolder
,名称,值
)“OutputLayerType”、“分类”
导入网络为DAGNetwork
在导入的网络体系结构的末尾附加一个分类输出层。
DAGNetwork
图像分类导入预先训练好的TensorFlow网络,以保存的模型格式作为DAGNetwork
对象,并使用导入的网络对图像进行分类。
指定模型文件夹。
如果~ (“digitsDAGnet”,“dir”)解压缩(“digitsDAGnet.zip”)结束modelFolder =”。/ digitsDAGnet ';
指定类名。
classNames = {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络。默认情况下,importTensorFlowNetwork
导入网络为DAGNetwork
对象。指定图像分类问题的输出层类型。
net = importTensorFlowNetwork(modelFolder,“OutputLayerType”,“分类”,“类”类名)
导入已保存的模型…翻译模型,这可能需要几分钟……完成翻译。装配网络……导入完成。
net = DAGNetwork with properties: Layers: [13×1 nnet.cnn.layer.Layer] Connections: [13×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}
绘制网络架构图。
情节(净)标题(“DAG网络架构”)
读取要分类的图像并显示图像的大小。该图像是一个大小为28 × 28像素的灰度(单通道)图像。
digitDatasetPath = fullfile(toolboxdir(“nnet”),“nndemos”,“nndatasets”,“DigitDataset”);I = imread(fullfile(digitDatasetPath),“5”,“image4009.png”));大小(我)
ans =1×228日28日
显示网络的输入大小。在这种情况下,图像大小与网络输入大小相匹配。如果它们不匹配,则必须使用imresize(我netInputSize (1:2))
.
net.Layers (1) .InputSize
ans =1×328 28 1
使用预训练的网络对图像进行分类。
标签=分类(net,I);
显示图像和分类结果。
imshow (I)标题([“分类结果”char(标签)))
dlnetwork
图像分类导入预先训练好的TensorFlow Network,以保存的模型格式作为dlnetwork
对象,并使用导入的网络来预测类标签。
指定模型文件夹。
如果~ (“digitsDAGnet”,“dir”)解压缩(“digitsDAGnet.zip”)结束modelFolder =”。/ digitsDAGnet ';
指定类名。
classNames = {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络dlnetwork
对象。
net = importTensorFlowNetwork(modelFolder,“TargetNetwork”,“dlnetwork”)
导入已保存的模型…翻译模型,这可能需要几分钟……完成翻译。装配网络……导入完成。
net = dlnetwork with properties: Layers: [12×1 nnet.cnn.layer.Layer] Connections: [12×2 table] Learnables: [6×3 table] State: [0×3 table] InputNames: {'input_1'} OutputNames: {'activation_1'} Initialized: 1 .初始化
读取要分类的图像并显示图像的大小。该图像是一个大小为28 × 28像素的灰度(单通道)图像。
digitDatasetPath = fullfile(toolboxdir(“nnet”),“nndemos”,“nndatasets”,“DigitDataset”);I = imread(fullfile(digitDatasetPath),“5”,“image4009.png”));大小(我)
ans =1×228日28日
显示网络的输入大小。在这种情况下,图像大小与网络输入大小相匹配。如果它们不匹配,则必须使用imresize(我netInputSize (1:2))
.
netInputSize = net.Layers(1).InputSize
netInputSize =1×328 28 1
将图像转换为adlarray
.用尺寸格式化图像“SSCB”
(空间,空间,通道,批次)。在这种情况下,批处理大小为1,您可以省略它(SSC的
).
I_dlarray = dlarray(single(I)),“SSCB”);
对样本图像进行分类,找到预测的标签。
prob = predict(net,I_dlarray);[~,label] = max(prob);
显示图像和分类结果。
imshow (I)标题([“分类结果”一会{标签}])
导入预先训练好的TensorFlow网络,以保存的模型格式作为DAGNetwork
对象,并使用导入的网络对图像进行分类。导入的网络包含不支持转换为内置MATLAB层的层。金宝app当您导入这些层时,软件会自动生成自定义层。
本例使用helper函数findCustomLayers
.要查看此函数的代码,请参见Helper函数.
指定模型文件夹。
如果~ (“digitsDAGnetwithnoise”,“dir”)解压缩(“digitsDAGnetwithnoise.zip”)结束modelFolder =”。/ digitsDAGnetwithnoise ';
指定类名。
classNames = {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络。默认情况下,importTensorFlowNetwork
导入网络为DAGNetwork
对象。指定图像分类问题的输出层类型。
net = importTensorFlowNetwork(modelFolder,“OutputLayerType”,“分类”,“类”类名);
导入已保存的模型…翻译模型,这可能需要几分钟……完成翻译。装配网络……导入完成。
如果导入的网络包含不支持转换为内置MATLAB层的层,则金宝appimportTensorFlowNetwork
可以自动生成自定义层来代替这些层。importTensorFlowNetwork
将每个生成的自定义层保存为单独的.m
包中的文件+ digitsDAGnetwithnoise
在当前文件夹中。
使用helper函数查找自动生成的自定义层的索引findCustomLayers
,并显示自定义图层。
ind = findCustomLayers(net。层,' + digitsDAGnetwithnoise ');net.Layers(印第安纳州)
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”));
使用预训练的网络对图像进行分类。
标签=分类(net,I);
显示图像和分类结果。
imshow (I)标题([“分类结果”char(标签)))
Helper函数
介绍helper函数的代码findCustomLayers
本例中使用。findCustomLayers
返回指数
自定义层的importTensorFlowNetwork
自动生成。
函数index = findCustomLayers(layers,PackageName) s = what([‘。’PackageName]);索引= 0(1,长度(s.m));为I = 1:长度(层数)为J = 1:长度(s.m)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”S.m {j}(1:end-2)]) index (j) = i;结束结束结束结束
modelFolder
- - - - - -TensorFlow模型文件夹的名称包含TensorFlow模型的文件夹名称,指定为字符向量或字符串标量。modelFolder
必须在当前文件夹中,或者必须包含文件夹的完整路径或相对路径。modelFolder
必须包含文件saved_model.pb
子文件夹变量
.它还可以包含子文件夹资产
而且assets.extra
.
该文件saved_model.pb
包含层图架构和训练选项(例如,优化器、损失和指标)。
的子文件夹变量
包含预训练TensorFlow网络学习到的权重。默认情况下,importTensorFlowNetwork
导入权重。
的子文件夹资产
包含层图可以使用的补充文件(例如词汇表)。importTensorFlowNetwork
不导入文件资产
.
的子文件夹assets.extra
包含补充文件(如用户信息),与层图共存。
例子:“MobileNet”
例子:”。/ MobileNet '
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
importTensorFlowNetwork (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)
从modelFolder
作为一个DAGNetwork
对象,在包中保存自动生成的自定义层+ modelFolder
,并将分类输出层附加到导入的网络体系结构的末尾。
PackageName
- - - - - -自定义层包的名称所在包的名称importTensorFlowNetwork
保存自定义层,指定为字符向量或字符串标量。importTensorFlowNetwork
保存自定义图层包+
在当前文件夹中。如果您没有指定PackageName
“PackageName”
,然后importTensorFlowNetwork
将自定义层保存在名为+
在当前文件夹中。有关包的详细信息,请参见包创建命名空间.modelFolder
importTensorFlowNetwork
当您导入自定义TensorFlow层或当软件无法将TensorFlow层转换为等效的内置MATLAB层时,会尝试生成自定义层。importTensorFlowNetwork
将每个生成的自定义层保存为单独的.m
文件中+
.要查看或编辑自定义层,请打开相关的PackageName
.m
文件。有关自定义层的更多信息,请参见深度学习自定义层.
这个包+
还能包含子包吗PackageName
+行动
.这个子包包含了与TensorFlow操作符对应的MATLAB函数(参见金宝app支持TensorFlow操作符),用于自动生成的自定义层。importTensorFlowNetwork
将相关的MATLAB函数保存在单独的每个运算符中.m
子包中的文件+行动
.的目标函数dlnetwork
,例如预测
函数,在与自定义层交互时使用这些操作符。
例子:“PackageName”、“MobileNet”
例子:“PackageName”、“CustomLayers”
TargetNetwork
- - - - - -深度学习工具箱网络的目标类型“dagnetwork”
(默认)|“dlnetwork”
深度学习工具箱网络的目标类型,指定为“dagnetwork”
或“dlnetwork”
.
指定“TargetNetwork
作为“dagnetwork”
将网络导入为DAGNetwork
对象。在这种情况下,网
必须包含由TensorFlow保存的模型损失函数或名称-值参数指定的输出层吗“OutputLayerType”
.
指定“TargetNetwork
作为“dlnetwork”
将网络导入为dlnetwork
对象。在这种情况下,网
不包括输出层。
例子:“TargetNetwork”、“dlnetwork”
OutputLayerType
- - - - - -输出层类型“分类”
|“回归”
|“pixelclassification”
输出层的类型importTensorFlowNetwork
附加到导入的网络体系结构的末尾,指定为“分类”
,“回归”
,或“pixelclassification”
.附加一个pixelClassificationLayer
(计算机视觉工具箱)对象需要计算机视觉工具箱™。
如果你指定“TargetNetwork”
作为“dagnetwork”
保存的模型modelFolder
没有指定损失函数,必须给名称-值参数赋值吗“OutputLayerType”
.一个DAGNetwork
对象必须有输出层。
如果你指定“TargetNetwork”
作为“dlnetwork”
,importTensorFlowNetwork
忽略名称-值参数“OutputLayerType”
.一个dlnetwork
对象没有输出层。
例子:“OutputLayerType”、“分类”
ImageInputSize
- - - - - -输入图像的大小输入图像的大小为网络,指定为两个或三个矢量对应的数值(高度、宽度)
对于灰度图像和(高度、宽度、渠道)
分别用于彩色图像。网络使用此信息时saved_model.pb
文件中modelFolder
不指定输入大小。
例子:“ImageInputSize”,[28 28]
类
- - - - - -输出层的类类的输出层,指定为分类向量、字符串数组、单元格字符向量数组或“汽车”
.如果指定字符向量的字符串数组或单元格数组str
,然后importTensorFlowNetwork
将输出层的类设置为分类(str, str)
.如果类
是“汽车”
,然后importTensorFlowNetwork
将类设置为分类(1:N)
,在那里N
是类的数量。
如果你指定“TargetNetwork”
作为“dagnetwork”
,importTensorFlowNetwork
类的输出层中存储类的信息DAGNetwork
对象。
如果你指定“TargetNetwork”
作为“dlnetwork”
,importTensorFlowNetwork
忽略名称-值参数“类”
.一个dlnetwork
对象没有用于存储类信息的输出层。
例子:“类”,{' 0 ',' 1 ',' 3 '}
例子:“类”,直言({‘狗’,‘猫’})
数据类型:字符
|分类
|字符串
|细胞
详细的
- - - - - -指示器,显示导入进度信息真正的
或1
(默认)|假
或0
在命令窗口中显示导入进度信息的指示器,以数字或逻辑形式指定1
(真正的
)或0
(假
).
例子:“详细”,“真正的”
importTensorFlowNetwork
金宝app支持TensorFlow版本v2.0, v2.1, v.2.2和v2.3。
importTensorFlowNetwork
金宝app支持以下TensorFlow-Keras层类型转换为内置的MATLAB层,但有一些限制。
TensorFlow-Keras层 | 对应的深度学习工具箱层 |
---|---|
添加 |
additionLayer |
|
层: |
先进的激活:
|
层:
|
AveragePooling1D |
averagePooling1dLayer 与PaddingValue 指定为“的意思是” |
AveragePooling2D |
averagePooling2dLayer 与PaddingValue 指定为“的意思是” |
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 |
groupedConvolution2dLayer 或convolution2dLayer |
TimeDistributed |
sequenceFoldingLayer 在包裹层之前,和sequenceUnfoldingLayer 在包裹层之后 |
UpSampling2D |
resize2dLayer (图像处理工具箱) |
UpSampling3D |
resize3dLayer (图像处理工具箱) |
ZeroPadding1D |
nnet.keras.layer.ZeroPadding1DLayer |
ZeroPadding2D |
nnet.keras.layer.ZeroPadding2DLayer |
*对于PReLU层,importTensorFlowNetwork
将向量值的缩放参数替换为向量元素的平均值。您可以在导入后将参数更改为向量。有关示例,请参见导入Keras PReLU图层.
importTensorFlowNetwork
金宝app支持以下Keras损失函数:
mean_squared_error
categorical_crossentropy
sparse_categorical_crossentropy
binary_crossentropy
importTensorFlowNetwork
金宝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 |
tfMul 或tfSub |
挤压 |
tfSqueeze |
StatefulPartitionedCall |
无(转换为自定义层方法中的函数) |
StopGradient |
tfStopGradient |
StridedSlice |
tfStridedSlice 或tfSqueeze |
子 |
tfSub |
双曲正切 |
双曲正切 |
瓷砖 |
tfTile |
转置 |
交换 |
有关操作于的函数的更多信息dlarray
对象,看到支持dlarray的函数列表金宝app.
importTensorFlowNetwork
不会在GPU上执行。然而,importTensorFlowNetwork
导入预训练的神经网络进行深度学习DAGNetwork
或dlnetwork
对象,你可以在GPU上使用。
如果将网络导入为DAGNetwork
对象,可以在CPU或GPU上使用导入的网络进行预测分类
.使用name-value参数指定硬件需求ExecutionEnvironment
.对于具有多个输出的网络,使用预测
函数DAGNetwork
对象。
如果将网络导入为DAGNetwork
对象,可以在CPU或GPU上使用导入的网络进行预测预测
.使用name-value参数指定硬件需求ExecutionEnvironment
.如果网络有多个输出,则指定name-value参数ReturnCategorical
作为真正的
.
如果将网络导入为dlnetwork
对象,可以在CPU或GPU上使用导入的网络进行预测预测
.这个函数预测
如果输入数据或网络参数存储在GPU上,则在GPU上执行。
如果你使用minibatchqueue
要处理和管理输入数据的小批,可以使用minibatchqueue
如果GPU可用,对象默认将输出转换为GPU数组。
使用dlupdate
转换a的可学习参数dlnetwork
对象到GPU数组。
Dlnet = dlupdate(@gpuarray, Dlnet)
导入的网络可以在CPU或GPU上进行训练trainNetwork
.若要指定培训选项,包括用于执行环境的选项,请使用trainingOptions
函数。使用name-value参数指定硬件需求ExecutionEnvironment
.有关如何加速训练的更多信息,请参见并行、gpu和云中扩展深度学习.
使用GPU需要并行计算工具箱™和受支持的GPU设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱).
如果导入的网络包含不支持转换为内置MATLAB层的层(请参阅金宝appTensorFlow-Keras层支持转换为内置金宝appMATLAB层),importTensorFlowNetwork
不生成自定义层,然后importTensorFlowNetwork
返回一个错误。在这种情况下,您仍然可以使用importTensorFlowLayers
导入网络架构。
要使用预训练的网络对新图像进行预测或迁移学习,您必须以与用于训练导入模型的图像预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小,减去图像平均值,并将图像从BGR图像转换为RGB。
有关用于训练和预测的图像预处理的更多信息,请参见用于深度学习的图像预处理.
包裹的成员+
(自定义层和TensorFlow操作符)是不可访问的,如果包的父文件夹不在MATLAB路径上。有关更多信息,请参见包和MATLAB路径.PackageName
使用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
|importTensorFlowLayers
Vous possédez une版本modifiée de cet举例。Souhaitez-vous ouvrir cet示例avec vos修改?
Vous avez cliqué sur un lien qui对应à cette命令MATLAB:
倒exécuter la command, saisissez-la dans la fenêtre de command de MATLAB。Les navigateurs web ne 金宝appsupport pas Les command MATLAB。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。