进口层TensorFlow网络
从文件夹返回TensorFlow™网络的层LGRAPH.
= ImportTensorFlowLayers(modelFolder
)modelFolder
该函数可以导入用TensorFlow- keras顺序或函数API创建的TensorFlow网络。importtensorflowlayers.
中定义的层saved_model.pb
文件和学习权重包含在内变量
子文件夹,并返回LGRAPH.
作为一个LayerGraph
对象。
importtensorflowlayers.
要求用于张量流模型的深度学习工具箱™转换器金宝app支持包。如果没有安装此支金宝app持包,则importtensorflowlayers.
提供下载链接。
请注意
importtensorflowlayers.
尝试生成一个自定义层当你导入一个自定义TensorFlow层或当软件不能转换一个TensorFlow层到一个等效的内置MATLAB®层。有关软件支持转换的图层列表,请参阅金宝appTensorFlow-Keras层支持转换为内置金宝appMATLAB层.
importtensorflowlayers.
在包中保存生成的自定义层和关联的TensorFlow操作符+
.modelFolder
importtensorflowlayers.
不为每个不支持转换为内置MATLAB层的TensorFlow层自动生成自定义层。金宝app有关如何处理不受支持的层的更多信息,请参见金宝app提示.
使用由一个或多个名称-值参数指定的附加选项从TensorFlow网络导入层和权重。例如,LGRAPH.
= ImportTensorFlowLayers(modelFolder
,名称,值
)“OutputLayerType”、“分类”
在导入的网络体系结构的末尾附加分类输出层。
DAGNetwork
以保存的型号格式导入预磨削的Tensorflow网络作为一个LayerGraph
对象。然后,组装导入的层到DAGNetwork
对象,并使用组装网络对图像进行分类。
指定模型文件夹。
如果〜存在('digitsdagnet',“dir”)解压缩('digitsdagnet.zip')结束modeldolder =”。/ digitsDAGnet ';
指定类名。
ClassNames = {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,importtensorflowlayers.
将网络导入为LayerGraph
对象兼容DAGNetwork
对象。指定图像分类问题的输出层类型。
lgraph = importTensorFlowLayers(Modelodger,“OutputLayerType”,'分类')
导入保存的模型......翻译模型,这可能需要几分钟...完成翻译。
LAPHRAGH =具有属性的分层图:图层:[13×1 nnet.cnn.layer.layer]连接:[13×2表]输入名称:{'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'、粘土);
使用汇编
返回一个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 ('nnet'),'nndemos',“nndatasets”,“DigitDataset”);我= imread (fullfile (digitDatasetPath,“5”,'image4009.png'));
使用导入的网络对图像进行分类。
标签=分类(网络,i);
显示图像和分类结果。
imshow(i)标题([的分类结果一会{标签}])
dlnetwork.
以保存的型号格式导入预磨削的Tensorflow网络作为一个LayerGraph
对象兼容dlnetwork.
对象。然后,把LayerGraph
对象一个dlnetwork.
分类图像。
指定模型文件夹。
如果〜存在('digitsdagnet',“dir”)解压缩('digitsdagnet.zip')结束modeldolder =”。/ digitsDAGnet ';
指定类名。
ClassNames = {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
导入TensorFlow网络作为层兼容dlnetwork.
对象。
lgraph = importTensorFlowLayers(Modelodger,“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”);我= imread (fullfile (digitDatasetPath,“5”,'image4009.png'));大小(我)
ans =1×228日28日
将导入的图层图转换为adlnetwork.
对象。
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(单(我),'SSCB');
对样本图像进行分类,找到预测的标签。
概率=预测(dlnet I_dlarray);[~,标签]= max(概率);
显示图像和分类结果。
imshow(i)标题([的分类结果一会{标签}])
以保存的型号格式导入预磨削的Tensorflow网络作为一个LayerGraph
对象。然后,组装导入的层到DAGNetwork
对象。导入的网络包含不支持转换为内置MATLAB层的层。金宝app当您导入这些层时,软件会自动生成自定义层。
这个例子使用了helper函数FindCustomLayers.
.要查看此函数的代码,请参见Helper函数.
指定模型文件夹。
如果〜存在(“digitsDAGnetwithnoise”,“dir”)解压缩(“digitsDAGnetwithnoise.zip”)结束modeldolder =”。/ digitsDAGnetwithnoise ';
指定类名。
ClassNames = {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的层和权值。默认情况下,importtensorflowlayers.
将网络导入为LayerGraph
对象兼容DAGNetwork
对象。指定图像分类问题的输出层类型。
lgraph = importTensorFlowLayers(Modelodger,“OutputLayerType”,'分类');
导入保存的模型......翻译模型,这可能需要几分钟...完成翻译。
如果导入的网络包含不支持转换成内置MATLAB层的图层,那么金宝appimporttensorflowlayers.
可以自动生成自定义层来代替这些层。importtensorflowlayers.
将每个生成的自定义图层保存到单独的.m
包中的文件+ digitsDAGnetwithnoise
在当前文件夹中。
使用Helper功能查找自动生成的自定义图层的索引FindCustomLayers.
,并显示自定义层。
ind = findcustomlayers(lapraph.layers,' + digitsDAGnetwithnoise ');lgraph.Layers(印第安纳州)
ans = 2×1 Layer array with layers: 1' gaussian_noise_1' GaussianNoise digitsDAGnetwithnoise。kGaussianNoise1Layer3766 2' gaussian_noise_2' GaussianNoise digitsDAGnetwithnoise.kGaussianNoise2Layer3791
分类层不包含类,因此必须在组装网络之前指定这些。如果您未指定类,则软件会自动将类设置为1
,2
,......,N
, 在哪里N
为类数。
分类层有名称'classificationlayer_activation_1'
.将类设置为一会
然后用新的分类层替换导入的分类层。
粘土= lgraph.Layers(结束);粘土。类=一会;lgraph = replaceLayer (lgraph,'classificationlayer_activation_1'、粘土);
使用汇编
.函数返回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(['。\'包裹名字]);索引=零(1,长度(s.m));为i = 1:长度(层)为j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”S.m {j}(1:end-2)]) indices(j) = i;结束结束结束结束
modelFolder
- - - - - -Tensorflow模型文件夹的名称包含TensorFlow模型的文件夹名称,指定为字符向量或字符串标量。modelFolder
必须在当前文件夹中,否则必须包含文件夹的完整路径或相对路径。modelFolder
必须包含文件saved_model.pb
和子文件夹变量
.它还可以包含子文件夹资产
和assets.extra.
.
该文件saved_model.pb
包含图层图架构和培训选项(例如,优化器,丢失和度量标准)。
的子文件夹变量
包含预先训练的张量流网络学习到的权值。默认情况下,importtensorflowlayers.
进口的权重。
的子文件夹资产
包含层图可以使用的补充文件(例如,词汇表)。importtensorflowlayers.
没有导入文件在资产
.
的子文件夹assets.extra.
包含与层图共存的补充文件(例如,用户信息)。
例子:'mobilenet'
例子:”。/ MobileNet '
指定可选的逗号分隔的对名称,值
论点。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen
.
importTensorFlowLayers (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)
从中导入网络层和权重modelFolder
,保存包中的自动生成的自定义图层+ modelFolder
在当前文件夹中,指定导入的图层与a兼容DAGNetwork
对象,并将分类输出层附加到导入的图层的末尾。
PackageName
- - - - - -自定义层包的名称包装的名称importtensorflowlayers.
保存定制图层,指定为字符向量或字符串标量。importtensorflowlayers.
保存自定义图层包+
在当前文件夹中。如果没有指定PackageName
“PackageName”
,然后importtensorflowlayers.
将自定义层保存在名为+
在当前文件夹中。有关包的更多信息,请参见包创建名称空间.modelFolder
importtensorflowlayers.
尝试生成一个自定义层当你导入一个自定义TensorFlow层或当软件不能转换一个TensorFlow层到一个等效的内置MATLAB层。importtensorflowlayers.
将每个生成的自定义图层保存到单独的.m
文件in.+
.要查看或编辑自定义层,请打开关联的PackageName
.m
文件。有关自定义图层的更多信息,请参阅深度学习自定义图层.
这个包+
还能包含子包吗PackageName
+ ops.
.这个子包包含与TensorFlow运算符对应的MATLAB函数(参见金宝app支持的Tensorflow运算符)在自动生成的自定义层中使用。importtensorflowlayers.
为每个操作符单独保存相关的MATLAB函数.m
文件在子包中+ ops.
.对象功能dlnetwork.
,例如预测
函数,在与自定义层交互时使用这些操作符。
例子:“PackageName”、“MobileNet”
例子:“PackageName”、“CustomLayers”
TargetNetwork
- - - - - -深度学习工具箱网络的目标类型“dagnetwork”
(默认)|“dlnetwork”
用于导入网络架构的深度学习工具箱网络的目标类型,指定为“dagnetwork”
或“dlnetwork”
.
如果您指定“TargetNetwork”
作为“dagnetwork”
,所导入的网络架构兼容aDAGNetwork
对象。在这种情况下,进口了LGRAPH.
必须包含由TensorFlow保存的模型损失函数或名称-值参数指定的输出层“OutputLayerType”
.
如果您指定“TargetNetwork”
作为“dlnetwork”
,所导入的网络架构兼容adlnetwork.
对象。在这种情况下,进口了LGRAPH.
不包含输出层。
例子:“TargetNetwork”、“dlnetwork”
进口A.LayerGraph
对象兼容dlnetwork.
对象。
OutputLayerType
- - - - - -输出层类型'分类'
|'回归'
|“pixelclassification”
输出层的类型importtensorflowlayers.
附加到导入的网络架构的末尾,指定为'分类'
,'回归'
,或“pixelclassification”
.附加一个pixelClassificationLayer
(计算机视觉工具箱)对象需要计算机Vision Toolbox™。
如果您指定“TargetNetwork”
作为“dagnetwork”
和保存的模型modelFolder
不指定丢失函数,必须为名称值参数分配值“OutputLayerType”
.一个DAGNetwork
对象必须具有输出层。
如果您指定“TargetNetwork”
作为“dlnetwork”
,importtensorflowlayers.
忽略name-value参数“OutputLayerType”
.一个dlnetwork.
对象没有输出层。
例子:“OutputLayerType”、“分类”
ImageInputSize
- - - - - -输入图像大小网络的输入图像的大小指定为与相对应的两种或三个数值的向量[高度宽度]
对于灰度图像和(高度、宽度、渠道)
对于彩色图像。网络使用此信息saved_model.pb
文件in.modelFolder
没有指定输入大小。
例子:'imageInputsize',[28 28]
详细的
- - - - - -用于显示导入进度信息的指标真正的
或1
(默认)|假
或0
指示符,用于在命令窗口中显示导入进度信息,以数字或逻辑形式指定1
(真正的
)或0
(假
).
例子:“详细”,“真正的”
LGRAPH.
- 网络架构LayerGraph
对象网络架构,作为一个LayerGraph
对象。
要使用导入的图层图进行预测,必须转换LayerGraph
对象一个DAGNetwork
或dlnetwork.
对象。指定名称值参数“TargetNetwork”
作为“dagnetwork”
或“dlnetwork”
取决于预期的工作流。
importtensorflowlayers.
金宝app支持TensorFlow版本v2.0, v2.1, v2.2和v2.3。
importtensorflowlayers.
金宝app支持以下TensorFlow-Keras层类型转换为内置MATLAB层,但有一些限制。
TensorFlow-Keras层 | 对应的深度学习工具箱层 |
---|---|
添加 |
additionLayer |
|
层: |
先进的激活:
|
层:
|
AveragePooling1D |
普通Pooling1dlayer. 与PaddingValue 指定为“的意思是” |
AveragePooling2D |
普通Pooling2dlayer. 与PaddingValue 指定为“的意思是” |
Batchnormalization. |
batchNormalizationLayer |
双向(LSTM (__)) |
bilstmLayer |
衔接 |
depthConcatenationLayer |
Conv1D |
Convolution1dlayer. |
Conv2D |
convolution2dLayer |
conv2dtranspose. |
transposedConv2dLayer |
CuDNNGRU |
gruLayer |
cudnnlstm |
lstmlayer. |
密集的 |
fullyConnectedLayer |
DepthwiseConv2D |
groupedConvolution2dLayer |
辍学 |
dropoutLayer |
嵌入 |
WordembeddingLayer. (文本分析工具箱) |
平 |
nnet.keras.layer.flattencstylayer. |
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层,importtensorflowlayers.
用向量元素的平均值替换向量值缩放参数。您可以在导入后将参数更改回矢量。例如,请参见进口keras prelu层.
importtensorflowlayers.
金宝app支持以下Keras丢失功能:
mean_squared_error.
categorical_crossentropy
sparse_categorical_crossentropy
binary_crossentropy
importtensorflowlayers.
金宝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 |
exp. |
exp. |
FusedBatchNormV3 |
tfBatchnorm |
Gentich2. |
TFGATHER. |
身份 |
无(转换为自定义层中的值分配) |
IdentityN |
tfIdentityN |
L2Loss |
tfL2Loss |
LeakyRelu |
leakyrelu |
少 |
lt ,< |
日志 |
日志 |
Matmul. |
tfMatMul |
maxpool. |
tfMaxPool |
最大 |
tfmaximum. |
意思 |
tfMean |
最低 |
tfMinimum |
Mirrorpad. |
tfmirrorpad. |
m |
tfMul |
负的 |
- ,- |
包 |
tfStack |
垫 |
TFPAD. |
PadV2 |
TFPAD. |
partitionedcall. |
无(在自定义层方法中转换为函数) |
鲍 |
力量 ,.^ |
prod |
TFPROD. |
Acquarstandardnormal. |
tfRandomStandardNormal |
范围 |
tfrange. |
ReadVarifepop. |
无(转换为自定义层中的值分配) |
RealDiv |
tfDiv |
relu. |
relu. |
Relu6 |
relu. 和最小值 |
重塑 |
tfReshape |
ResizeNearestNeighbor |
dlresize (图像处理工具箱) |
Rsqrt |
√6 |
形状 |
tfshape. |
sigmoid. |
sigmoid. |
Softmax |
softmax |
SpaceToDepth |
spacetodepth. (图像处理工具箱) |
广场 |
. ^ 2 |
√6 |
√6 |
SquaredDifference. |
tfMul 或tfSub |
挤压 |
tfSqueeze |
sengyfulpartitionedcall. |
无(在自定义层方法中转换为函数) |
StopGradient |
tfStopGradient |
StridedSlice |
tfstringslice. 或tfSqueeze |
子 |
tfSub |
双曲正切 |
双曲正切 |
瓷砖 |
Tfile. |
转置 |
换乘 |
以获取有关操作的函数的更多信息dlarray
对象,参见Dlarray支持的函数列表金宝app.
importtensorflowlayers.
不能在GPU上执行。然而,importtensorflowlayers.
为深度学习导入预先训练的神经网络层LayerGraph
对象,您可以在GPU上使用。
将导入的LayerGraph
对象一个DAGNetwork
对象的使用汇编
.在这方面DAGNetwork
对象,您可以通过使用,预测CPU或GPU上的类标签分类
.使用name-value参数指定硬件需求ExecutionEnvironment
.对于具有多个输出的网络,使用预测
函数并指定名称-值参数return类别
作为真正的
.
将导入的LayerGraph
对象一个dlnetwork.
对象的使用dlnetwork.
.在这方面dlnetwork.
对象,您可以通过使用,预测CPU或GPU上的类标签预测
.这个函数预测
如果输入数据或网络参数存储在GPU上,则在GPU上执行。
你可以训练进口的LayerGraph
在CPU或GPU上使用trainNetwork
.要指定培训选项,包括执行环境的选项,请使用trainingOptions
函数。使用name-value参数指定硬件需求ExecutionEnvironment
.有关如何加速训练的更多信息,请参见在GPU上并在GPU上并在云中扩大深度学习.
使用GPU需要并行计算工具箱™和支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱).
如果导入的网络包含不支持转换为内置MATLAB层的层(参见金宝appTensorFlow-Keras层支持转换为内置金宝appMATLAB层) 和importtensorflowlayers.
那时不会自动生成自定义图层importtensorflowlayers.
在不支持的层上插入一个占位符层。金宝app要查找网络中不支持的层的名称和索引,请使用金宝appFindPlaceHolderLayers.
函数。然后,您可以用您定义的新图层替换占位符。更换层,使用replaceLayer
.
要使用预先训练的网络对新图像进行预测或迁移学习,必须以与用于训练导入模型的图像的预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小,减去图像平均值,以及将图像从BGR图像转换为RGB图像。
有关预处理图像进行培训和预测的更多信息,请参阅深度学习的图像预处理.
一揽子计划的成员+
如果包的父文件夹不在MATLAB路径上,则无法访问(自定义层和TensorFlow操作符)。有关更多信息,请参见包裹和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
|layerGraph
|汇编
|FindPlaceHolderLayers.
|replaceLayer
|importtensorflownetwork.
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。