导入挤压网
将卷积神经网络作为函数,用迁移学习对预先训练好的网络进行微调,对新的图像集合进行分类。
这个例子使用了几个辅助函数。要查看这些函数的代码,请参见辅助函数.
将新图像解压缩并加载为图像数据存储。图像数据存储
自动标签的图像基于文件夹名称和存储数据作为ImageDatastore
对象。图像数据存储使您能够存储大型图像数据,包括内存中不适合的数据,并在卷积神经网络训练期间高效地读取图像批。指定最小批大小。
该数据集很小,包含75个训练图像。显示一些示例图像。
提取训练集并对分类标签进行热编码。
确定数据中的类数。
挤压网
是一种卷积神经网络,它对来自ImageNet数据库的100多万张图像进行训练。因此,该网络已经学习了广泛图像的丰富特征表示。该网络可以将图像分为1000个对象类别,如键盘、鼠标、铅笔和许多动物。
导入预训练的挤压网
网络是一种功能。
包含导入的ONNX网络的函数已保存到文件squeezenetFcn.m中。要了解如何使用此功能,请键入:help squeezenetFcn。
params=ONNXParameters,属性为:Learnables:[1×1结构]Nonlearnables:[1×1结构]状态:[1×1结构]NumDimensions:[1×1结构]网络函数名:'squeezenetFcn'
参数个数
是一个onnx参数
对象,该对象包含网络参数。挤压
是包含网络体系结构的模型函数。importONNXFunction
节省了挤压
在当前文件夹中。
计算新训练集上预训练网络的分类精度。
准确度很低。
通过输入显示可学习的网络参数参数个数。可学
.这些参数,例如权重(W
)及偏见(B
)在训练过程中,网络会更新卷积层和完全连接层。不可学习的参数在训练期间保持不变。
预训练网络的最后两个可学习参数配置为1000类。
conv10_W:(1×1×512×1000 dlarray]
conv10_B:[1000×1 dlarray]
参数conv10_W
和conv10_B
必须针对新的分类问题进行微调。通过初始化参数,将参数转换为对五个类进行分类。
冻结网络的所有参数以将其转换为不可学习的参数。由于不需要计算冻结层的梯度,因此冻结许多初始层的权重可以显著加快网络训练。
解冻网络的最后两个参数,将其转换为可学习的参数。
现在网络已经为培训做好了准备。初始化培训进度图。
指定培训选项。
培训网络。
计算微调后网络的分类精度。
辅助函数
本节提供本示例中使用的帮助器函数的代码。
的GetNetworkAccurance
函数通过计算分类精度来评估网络性能。
的modelGradients
函数计算损失和梯度。
的挤压
函数生成挤压网
网络