版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.10.16 星期二 |
前言
目前世界上科技界的所有大佬一致认为人工智能是下一代科技革命,苹果作为科技界的巨头,当然也会紧跟新的科技革命的步伐,其中ios API 就新出了一个框架
Core ML
。ML是Machine Learning
的缩写,也就是机器学习,这正是现在很火的一个技术,它也是人工智能最核心的内容。感兴趣的可以看我写的下面几篇。
1. Core ML框架详细解析(一) —— Core ML基本概览
2. Core ML框架详细解析(二) —— 获取模型并集成到APP中
3. Core ML框架详细解析(三) —— 利用Vision和Core ML对图像进行分类
4. Core ML框架详细解析(四) —— 将训练模型转化为Core ML
5. Core ML框架详细解析(五) —— 一个Core ML简单示例(一)
6. Core ML框架详细解析(六) —— 一个Core ML简单示例(二)
Overview - 概览
减少应用程序包中Core ML模型使用的存储空间。
在您的应用程序中将您的机器学习模型放在App包里是开始使用Core ML的最简单方法。 随着模型变得更加先进,它们可能变得更大并占用大量存储空间。 对于基于神经网络的模型,请考虑通过对其权重参数使用较低精度的表示来减少其占用空间。 如果您的模型不是可以使用半精度的神经网络,或者您需要进一步缩小应用程序的大小,请添加在用户设备上下载和编译模型的功能,而不是将模型与您的应用程序包放在一起。
Convert to a Half-Precision Model - 转换为半精度模型
Core ML Tools提供转换功能,将神经网络模型的浮点权重从全精度转换为半精度值(将表示中使用的位数从32减少到16)。 这种类型的转换可以显着减少网络的大小,其中大部分通常来自网络中的连接权重。
// Listing 1
Converting a model to lower precision with Core ML Tools
# Load a model, lower its precision, and then save the smaller model.
model_spec = coremltools.utils.load_spec('./exampleModel.mlmodel')
model_fp16_spec = coremltools.utils.convert_neural_network_spec_weights_to_fp16(model_spec)
coremltools.utils.save_spec(model_fp16_spec, 'exampleModelFP16.mlmodel')
您只能将嵌入神经网络的神经网络或管道模型转换为半精度。 必须将模型中的所有全精度权重参数转换为半精度。
使用半精度浮点值不仅会降低浮点值的精度,还会降低可能值的范围。 在将此选项部署到用户之前,请确认模型的行为不会降级。
转换为半精度的模型需要以下OS版本或更高版本:iOS 11.2,macOS 10.13.2,tvOS 11.2或watchOS 4.2
。
Convert to a Lower Precision Model - 转换为较低精度模型
Core ML Tools 2.0
引入了新的实用程序,可将模型的精度降低到8,4,2或1位。 这些工具包括用于衡量原始模型和较低精度模型之间行为差异的功能。 有关使用这些实用程序的更多信息,请参阅Core ML Tools Neural Network Quantization文档。
较低精度的型号需要以下OS版本或更高版本:iOS 12,macOS 10.14,tvOS 12或watchOS 5
。
Download and Compile a Model - 下载并编译模型
减小应用程序大小的另一个选择是让应用程序将模型下载到用户的设备上并在后台编译。 例如,如果用户仅使用您的应用支持的模型的子集,则无需将所有可能的模型与您的应用捆绑在一起。 相反,可以稍后根据用户行为下载模型。 请参阅Downloading and Compiling a Model on the User's Device。
后记
本篇主要讲述了减少Core ML应用程序的大小,感兴趣的给个赞或者关注~~~