进口层TensorFlow网络
从文件夹返回TensorFlow™网络的图层lgraph
= importTensorFlowLayers (modelFolder
)modelFolder
该函数可以导入用TensorFlow- keras顺序或函数API创建的TensorFlow网络。importTensorFlowLayers
中定义的层saved_model.pb
文件中所包含的学习权重变量
子文件夹,然后返回lgraph
作为一个LayerGraph
对象。
importTensorFlowLayers
需要用于张量流模型的深度学习工具箱™转换器万博1manbetx支持包。如果没有安装此支万博1manbetx持包,则importTensorFlowLayers
提供下载链接。
笔记
importTensorFlowLayers
尝试生成一个自定义层当你导入一个自定义TensorFlow层或当软件不能转换一个TensorFlow层到一个等效的内置MATLAB®层。有关软件支持转换的层的列表,请参见万博1manbetxTensorFlow-Keras层支持转换为内置万博1manbetxMATLAB层.
importTensorFlowLayers
保存包中生成的自定义图层和相关的Tensorflow运算符+
.modelFolder
importTensorFlowLayers
不为每个不支持转换为内置MATLAB层的TensorFlow层自动生成自定义层。万博1manbetx有关如何处理不受支持的层的更多信息,请参见万博1manbetx提示.
将图层和权重与TensorFlow网络导入,其中包含一个或多个名称值参数指定的其他选项。例如,lgraph
= importTensorFlowLayers (modelFolder
,名称,值
)“OutputLayerType”、“分类”
将分类输出层附加到导入的网络架构的末尾。
DAGNetwork
以保存的模型格式导入预训练的TensorFlow网络作为LayerGraph
对象。然后,组装导入的层到DAGNetwork
对象,并利用组合网络对图像进行分类。
指定模型文件夹。
如果~ (“数码达格网”,'dir')解压缩(“digitsDAGnet.zip”)结束modelFolder =”。/ digitsDAGnet ';
指定类名。
一会= {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的图层和权重。默认情况下,importTensorFlowLayers
将网络导入为LayerGraph
对象兼容DAGNetwork
对象。指定图像分类问题的输出层类型。
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(结束)
ANS = ClassificationOutputLayer具有属性:名称:'classificationLayer_activation_1'类:'auto'类重量:'无'输出:'auto'upperameters lockfunction:'crossentropyex'
分类层不包含类,因此必须在组装网络之前指定这些类。如果不指定类,则软件会自动将类设置为1
,2
、……N
,在那里N
是课程的数量。
分类层有名称“ClassificationLayer_activation_1”
.将类设置为Classnames.
然后用新的分类层替换导入的分类层。
Clayer = Lapraph.Layers(END);clayer.classes = classnames;Lgraph =替换剂(LGROPE,“ClassificationLayer_activation_1”、粘土);
使用装配网络
返回一个DAGNetwork
对象。
净= assembleNetwork (lgraph)
net =具有属性的dagnetwork:图层:[13×1 nnet.cnn.layer.layer]连接:[13×2表] InputNames:{'input_1'} OutputNames:{'classificationLayer_activation_1'}
阅读你想分类的图像。
digitDatasetPath = fullfile (toolboxdir (“nnet”),“nndemos”,“nndatasets”,“DigitDataset”);我= imread (fullfile (digitDatasetPath,“5”,“image4009.png”));
使用导入的网络对图像进行分类。
标签=分类(净,I);
显示图像和分类结果。
imshow(I)标题([的分类结果ClassNames {label}])
数据链路网络
以保存的模型格式导入预训练的TensorFlow网络作为LayerGraph
对象兼容数据链路网络
对象。然后,把LayerGraph
对象至A.数据链路网络
对图像进行分类。
指定模型文件夹。
如果~ (“数码达格网”,'dir')解压缩(“digitsDAGnet.zip”)结束modelFolder =”。/ digitsDAGnet ';
指定类名。
一会= {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
将TensoRFlow网络导入与兼容的图层数据链路网络
对象。
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”);我= imread (fullfile (digitDatasetPath,“5”,“image4009.png”));大小(我)
ans =1×228日28日
将导入的层图转换为数据链路网络
对象。
dlnet = dlnetwork(3);
显示网络的输入大小。在本例中,图像大小与网络输入大小匹配。如果它们不匹配,您必须使用imresize(我netInputSize (1:2))
.
dlnet.Layers (1) .InputSize
ans =1×328日28日1
将图像转换为adlarray.
.使用尺寸格式化图像“SSCB”
(spatial, spatial, channel, batch)。在本例中,批大小为1,您可以省略它('SSC'
)。
I_dlarray = dlarray(单(我),“SSCB”);
对样本图像进行分类,找到预测的标签。
prob =预测(dlnet,i_dlarray);[〜,标签] = max(prob);
显示图像和分类结果。
imshow(I)标题([的分类结果ClassNames {label}])
以保存的模型格式导入预训练的TensorFlow网络作为LayerGraph
对象。然后,组装导入的层到DAGNetwork
对象。导入的网络包含不支持转换成内置MATLAB层的图层。万博1manbetx导入这些图层时,软件会自动生成自定义图层。
这个例子使用了helper函数findCustomLayers
.要查看此功能的代码,请参阅Helper函数.
指定模型文件夹。
如果~ ('digitsdagnetwithnoise','dir')解压缩(“digitsDAGnetwithnoise.zip”)结束modelFolder =”。/ digitsDAGnetwithnoise ';
指定类名。
一会= {' 0 ',' 1 ',' 2 ',“3”,“4”,“5”,“6”,“7”,“8”,“9”};
以保存的模型格式导入TensorFlow网络的图层和权重。默认情况下,importTensorFlowLayers
将网络导入为LayerGraph
对象兼容DAGNetwork
对象。指定图像分类问题的输出层类型。
lgraph = importTensorFlowLayers (modelFolder,'outputlayertype',“分类”);
导入保存的模型…翻译模型可能需要几分钟……完成翻译。
如果导入的网络包含不支持转换为内置MATLAB层的层,则万博1manbetximportTensorFlowLayers
可以自动生成自定义层来代替这些层。importTensorFlowLayers
将每个生成的自定义层保存为单独的.m
包中的文件+ digitsDAGnetwithnoise
在当前文件夹中。
使用helper函数查找自动生成的自定义层的索引findCustomLayers
,并显示自定义图层。
印第安纳州= findCustomLayers (lgraph。层,' + 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”
.将类设置为Classnames.
然后用新的分类层替换导入的分类层。
Clayer = Lapraph.Layers(END);clayer.classes = classnames;Lgraph =替换剂(LGROPE,“ClassificationLayer_activation_1”、粘土);
使用装配网络
.函数返回DAGNetwork
准备用于预测的对象。
净= assembleNetwork (lgraph)
net =具有属性的Dagnetwork:图层:[15×1 nnet.cnn.layer.layer]连接:[15×2表]输入名称:{'input_1'} OutputNames:{'classificationLayer_activation_1'}
Helper函数
本节提供了辅助功能的代码findCustomLayers
在此示例中使用。findCustomLayers
返回指数
自定义层的进口物流网络
自动生成。
函数indices = findcustomlayers(图层,packageName)s =什么([‘。’PackageName]);指数= 0(1、长度(小);为了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
,以及子文件夹变量
.它还可以包含子文件夹资产
和额外资产
.
该文件saved_model.pb
包含层图体系结构和培训选项(例如,优化器、损失和指标)。
的子文件夹变量
包含预先训练的张量流网络学习到的权值。默认情况下,importTensorFlowLayers
进口的权重。
的子文件夹资产
包含层图可以使用的补充文件(例如,词汇表)。importTensorFlowLayers
没有导入文件在资产
.
的子文件夹额外资产
包含与层图共存的补充文件(例如,用户信息)。
例子:“MobileNet”
例子:”。/ MobileNet '
指定可选的逗号分隔的对名称,值
论据。的名字
是参数名称和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值
.
importTensorFlowLayers (modelFolder‘TargetNetwork’,‘dagnetwork’,‘OutputLayerType’,“分类”)
从中导入网络层和权重modelFolder
,在包中保存自动生成的自定义层+ modelFolder
在当前文件夹中,指定导入的图层与DAGNetwork
对象,并将分类输出层附加到导入层的末尾。
PackageName
- - - - - -自定义层包的名称其中包含的包的名称importTensorFlowLayers
保存自定义层,指定为字符向量或字符串标量。importTensorFlowLayers
保存自定义层包+
在当前文件夹中。如果您未指定PackageName
“PackageName”
, 然后importTensorFlowLayers
将自定义层保存在名为+
在当前文件夹中。有关包的更多信息,请参见包创建名称空间.modelFolder
importTensorFlowLayers
尝试生成一个自定义层当你导入一个自定义TensorFlow层或当软件不能转换一个TensorFlow层到一个等效的内置MATLAB层。importTensorFlowLayers
将每个生成的自定义层保存为单独的.m
文件中+
.要查看或编辑自定义层,请打开关联的PackageName
.m
有关自定义图层的详细信息,请参见深度学习自定义图层.
包裹+
还能包含子包吗PackageName
+行动
.该子组件包含与Tensorflow运算符对应的MATLAB函数(参见万博1manbetx支持TensorFlow运营商)在自动生成的自定义层中使用。importTensorFlowLayers
为每个操作符单独保存相关的MATLAB函数.m
文件在子包中+行动
.的对象函数数据链路网络
,例如预测
函数,在与自定义图层交互时使用这些运算符。
例子:“PackageName”、“MobileNet”
例子:“PackageName”、“CustomLayers”
TargetNetwork
- - - - - -DEATE学习工具箱网络的目标类型“dagnetwork”
(默认)|'dlnetwork'
导入网络体系结构的深度学习工具箱网络的目标类型,指定为“dagnetwork”
或'dlnetwork'
.
如果您指定“TargetNetwork”
作为“dagnetwork”
,所导入的网络架构兼容aDAGNetwork
对象。在本例中,导入的lgraph
必须包含由TensorFlow保存的模型丢失函数或名称值参数指定的输出层'outputlayertype'
.
如果您指定“TargetNetwork”
作为'dlnetwork'
,所导入的网络架构兼容a数据链路网络
对象。在本例中,导入的lgraph
不包括输出层。
例子:'targetnetwork','dlnetwork'
进口LayerGraph
对象兼容数据链路网络
对象。
OutputLayerType
- - - - - -输出层类型“分类”
|“回归”
|“pixelclassification”
输出层的类型importTensorFlowLayers
附加到导入的网络架构的末尾,指定为“分类”
,“回归”
,或“pixelclassification”
.附加一个pixelClassificationLayer
(电脑视觉工具箱)对象需要计算机视觉工具箱™.
如果您指定“TargetNetwork”
作为“dagnetwork”
和保存的模型modelFolder
不指定损失函数,必须为name-value参数赋值'outputlayertype'
.一个DAGNetwork
对象必须有一个输出层。
如果您指定“TargetNetwork”
作为'dlnetwork'
,importTensorFlowLayers
忽略name-value参数'outputlayertype'
.一个数据链路网络
对象没有输出层。
例子:“OutputLayerType”、“分类”
ImageInputSize
- - - - - -输入图像大小网络输入图像的大小,指定为两个或三个数值对应的向量(高度、宽度)
用于灰度图像和(高度、宽度、渠道)
分别用于彩色图像。当saved_model.pb
文件中modelFolder
没有指定输入大小。
例子:“ImageInputSize”,[28 28]
详细的
- - - - - -用于显示导入进度信息的指标真正的
或1
(默认)|错误的
或0
指示符,用于在命令窗口中显示导入进度信息,以数字或逻辑形式指定1
(真正的
)或0
(错误的
)。
例子:“详细”,“真正的”
lgraph
——网络体系结构LayerGraph
对象网络架构,返回ASLayerGraph
对象。
要使用导入的层图进行预测,必须将LayerGraph
对象至A.DAGNetwork
或数据链路网络
对象。指定名称值参数“TargetNetwork”
作为“dagnetwork”
或'dlnetwork'
取决于预期的工作流程。
importTensorFlowLayers
万博1manbetx支持TensorFlow版本v2.0, v2.1, v2.2和v2.3。
importTensorFlowLayers
万博1manbetx支持以下TensorFlow-keras图层类型进行转换为内置MATLAB层,具有一些限制。
TensorFlow-Keras层 | 相应的深层学习工具箱层 |
---|---|
添加 |
additionLayer |
|
层数: |
先进的激活:
|
层数:
|
AveragePooling1D |
平均池1层 与PaddingValue 指定为“的意思是” |
AveragePooling2D |
平均池2层 与PaddingValue 指定为“的意思是” |
BatchNormalization |
batchNormalizationLayer |
双向(LSTM (__)) |
bilstmLayer |
连接 |
深度扫描层 |
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 |
gru. |
gruLayer |
输入 |
imageInputLayer ,sequenceInputLayer ,或featureInputLayer |
LSTM |
lstmLayer |
MaxPool1D |
maxPooling1dLayer |
MaxPool2D |
maxPooling2dLayer |
乘 |
multiplicationLayer |
separableconv2d. |
groupedconvolution2dlayer. 或convolution2dLayer |
TimeDistributed |
sequenceFoldingLayer 在包装层之前,和sequencfoldinglayer. 缠绕层后 |
UpSampling2D |
resize2dLayer (图像处理工具箱) |
UpSampling3D |
resize3dlayer. (图像处理工具箱) |
ZeroPadding1D |
nnet.keras.layer.ZeroPadding1DLayer |
ZeroPadding2D |
nnet.keras.layer.ZeroPadding2DLayer |
*对于prelu层,importTensorFlowLayers
用向量元素的平均值替换向量值缩放参数。您可以在导入后将参数更改回矢量。例如,请参见导入Keras PReLU图层.
importTensorFlowLayers
万博1manbetx支持以下Keras loss功能:
mean_squared_error
patporical_crossentropy.
sparse_categorical_crossentropy
binary_crossentropy
importTensorFlowLayers
万博1manbetx支持以下TensorFlow操作符转换为MATLAB函数dlarray.
万博1manbetx支持。
张量流算子 | 相应的MATLAB函数 |
---|---|
添加 |
tfAdd |
地址 |
tfAddN |
addv2. |
tfAdd |
AvgPool |
tfAvgPool |
BatchMatMulV2 |
tfBatchMatMulV2 |
BiasAdd |
tfBiasAdd |
广播托 |
tfBroadcastTo |
铸造 |
tfCast |
ConcatV2 |
tfCat |
const |
无(转换为自定义层中的重量) |
Conv2d. |
tfconv2d. |
DepthToSpace |
堤防 (图像处理工具箱) |
DepthwiseConv2dNative |
tfDepthwiseConv2D |
经验值 |
经验值 |
FusedBatchNormV3 |
tfBatchnorm |
GatherV2 |
tfGather |
身份 |
无(转换为自定义层的值分配) |
Identityn. |
tfIdentityN |
l2loss. |
tfL2Loss |
LeakyRelu |
leakyrelu. |
少 |
lt ,< |
日志 |
日志 |
MatMul |
tfMatMul |
MaxPool |
tfmaxpool. |
最大值 |
tfMaximum |
意思是 |
tfMean |
最低限度 |
tfMinimum |
MirrorPad |
tfMirrorPad |
骡子 |
tfMul |
负的 |
- ,- |
包 |
tfStack |
垫 |
tfPad |
PadV2 |
tfPad |
PartitionedCall |
无(在自定义图层方法中翻译为函数) |
战俘 |
权力 ,.^ |
戳 |
tfProd |
随机标准正常 |
TFRANDOMSTASTADDNORMAL. |
范围 |
tfRange |
可读变量 |
无(转换为自定义层的值分配) |
RealDiv |
tfDiv |
雷卢 |
线性整流函数(Rectified Linear Unit) |
Relu6 |
线性整流函数(Rectified Linear Unit) 和最小值 |
重塑 |
tfReshape |
ResizenearestNeighbor. |
dlresize (图像处理工具箱) |
Rsqrt |
SQRT. |
形状 |
tfShape |
乙状结肠 |
乙状结肠 |
Softmax |
softmax |
SpaceToDepth |
spaceToDepth (图像处理工具箱) |
广场 |
. ^ 2 |
√6 |
SQRT. |
SquaredDifference |
tfMul 或TFSUB. |
挤压 |
tfSqueeze |
StatefulPartitionedCall |
无(在自定义图层方法中翻译为函数) |
stopgradient. |
tfStopGradient |
StridedSlice |
tfStridedSlice 或tfSqueeze |
子 |
TFSUB. |
双曲正切 |
塔尼 |
瓷砖 |
文件 |
转置 |
交换 |
以获取有关操作的函数的更多信息dlarray.
对象,请参见支持dlarray的函数列表万博1manbetx.
importTensorFlowLayers
不能在GPU上执行。然而,importTensorFlowLayers
为深度学习导入预先训练的神经网络层LayerGraph
对象,可以在GPU上使用。
将导入的LayerGraph
对象至A.DAGNetwork
通过使用装配网络
.在DAGNetwork
对象,然后可以通过使用分类
。使用名称值参数指定硬件要求execultenvironment.
.对于具有多个输出的网络,使用预测
函数并指定名称值参数ReturnCategorical
作为真正的
.
将导入的LayerGraph
对象至A.数据链路网络
通过使用数据链路网络
.在数据链路网络
对象,然后可以通过使用预测
.功能预测
如果输入数据或网络参数存储在GPU上,则在GPU上执行。
如果你使用minibatchqueue
要处理和管理小批量输入数据minibatchqueue
对象在默认情况下将输出转换为GPU阵列(如果GPU可用)。
使用dlupdate.
转换a的可学习参数数据链路网络
对象到GPU阵列。
dlnet = dlupdate (@gpuarray dlnet)
你可以训练进口的LayerGraph
使用的对象或通过使用的对象或GPUtrainNetwork
.要指定培训选项,包括执行环境的选项,请使用trainingOptions
函数。使用name-value参数指定硬件需求execultenvironment.
.有关如何加速训练的更多信息,请参见在gpu和云上并行扩展深度学习.
使用GPU需要并行计算工具箱™和支持的GPU设备。万博1manbetx有关支持的设备的信息,请参见万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱).
如果导入的网络包含不支持转换成内置MATLAB层的图层(请参阅万博1manbetxTensorFlow-Keras层支持转换为内置万博1manbetxMATLAB层),importTensorFlowLayers
不自动生成自定义层,那么importTensorFlowLayers
在不支持的层上插入一个占位符层。万博1manbetx要查找网络中不支持的层的名称和索引,请使用万博1manbetxfindPlaceholderLayers
函数。然后,您可以将占位符层替换为您定义的新层。要替换一个图层,请使用replaceLayer
.
要使用预先训练的网络对新图像进行预测或迁移学习,必须以与用于训练导入模型的图像的预处理相同的方式对图像进行预处理。最常见的预处理步骤是调整图像大小,减去图像平均值,以及将图像从BGR图像转换为RGB图像。
有关用于训练和预测的预处理图像的更多信息,请参见深度学习的预处理图像.
一揽子计划的成员+
如果包的父文件夹不在MATLAB路径上,则无法访问(自定义层和TensorFlow操作符)。有关更多信息,请参见软件包和MATLAB路径.PackageName
使用进口物流网络
或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
|进口物流网络
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。