import tensorflow_model_optimization as tfmot
model = tf.keras.Sequential([
...
])
# Quantize the entire model.
quantized_model = tfmot.quantization.keras.quantize_model(model)
# Continue with training as usual.
quantized_model.compile(...)
quantized_model.fit(...)
提高 CPU 性能一直是团队的主要优先事项,我们在最近几个月发布了许多实质性的 CPU 相关性能优化。作为这项工作的一部分,我们开发了一个优化的矩阵乘法库 (ruy),从头开始构建,以在移动环境中通常使用的 CPU 硬件和模型类别上提供更好的性能。从 TensorFlow 1.15 开始,此库默认针对所有 ARM 设备启用,并且已帮助在极其广泛的模型和用例中实现了**从 1.2 倍到 5 倍的延迟改进**。
Pixel 4 - 单线程 CPU,2020 年 2 月
我们计划在 TensorFlow 2.3 版本中发布一些额外的 CPU 优化,包括使用 训练后权重量化 的模型的**执行速度提高约 40%**,以及一个新的高度优化的浮点卷积内核库 (XNNPACK),它可以实现**所有关键浮点卷积模型的执行速度提高 20-50%**,这些模型由 TensorFlow Lite 支持。
Hexagon DSP 是一种微处理器,可以在使用高通骁龙 SoC 的数百万台现代 Android 手机中找到。新的 TensorFlow Lite Hexagon 委托利用 DSP 实现性能提升,对于 MobileNet 和 Inceptionv3 等模型,与 CPU 相比,性能提升幅度在 3-25 倍之间,同时比 CPU 和 GPU 更节能。在我们的 博文 中了解更多信息。
Core ML 是苹果设备上提供的机器学习框架,并提供 API 以在苹果的神经引擎上运行 ML 模型。新的 TensorFlow Lite Core ML 委托允许在 Core ML 和神经引擎(如果可用)上运行 TensorFlow Lite 模型,以实现更快的推断,并提高功耗效率。在 iPhone XS 及更新机型上(神经引擎可用),我们观察到各种计算机视觉模型的性能提升幅度从 1.3 倍到 11 倍。在我们的 博文 中可以找到更多详细信息。
为了解决第一个问题,我们在 TensorFlow Lite 中添加了对 模型元数据支持,使模型创建者可以使用类型化对象描述模型的输入和输出。除了位图大小或颜色通道等基本信息外,我们还包含了平均值和标准差等信息,以传达给模型使用者,以便应用适当的规范化。
为了解决第二个样板代码问题,我们创建了 Android 代码生成器,它读取 TensorFlow Lite 元数据并创建适当的包装代码来调整大小、规范化以及从 ByteArray 转换到 ByteArray。这意味着您现在可以使用熟悉的高级对象与 TensorFlow Lite 模型交互。
// 1. Initializing the Model
MyClassifierModel myImageClassifier = new MyClassifierModel(activity);
// 2. Setting the input with a Bitmap called inputBitmap
MyClassifierModel.Inputs inputs = myImageClassifier.createInputs();
inputs.loadImage(inputBitmap));
// 3. Running the model
MyClassifierModel.Outputs outputs = myImageClassifier.run(inputs);
// 4. Retrieving the result
Map labeledProbability = outputs.getProbability();