电子书

深度学习的实践指南:从数据部署

第五章:测试和部署深度学习模型

第五章

测试和部署深度学习模型


一个模型,可以分类数据不是深度学习工作流程结束。你也要有信心,在看不见的数据和模型将工作,它会如预期与其他系统交互组件。本章涵盖了部署模型到目标设备,需要特定的性能特征。

部分

与其他系统集成和测试网络逻辑

在前面的章节中,网络被训练识别击掌三轴加速度数据。然而,网络只是整体的一部分需要一个成功的击掌计数器的逻辑。至少,该系统还需要逻辑:

  • 从传感器读取加速度
  • 预处理传感器数据量图
  • 量图传递到网络
  • 数标记击掌(逻辑来确保一个击掌,运动不是计算模式划过量图的两倍
dl-engineers-ebook-ch5-high-five-counter-logic-金宝appsimulink

上图:在仿真软件计数器击掌的表示逻辑。金宝app底部:情节顶部显示加速度计数据读入,中间线(绿色)表示量图贴上击掌,和底部的情节显示高5的数量统计。

想知道网络是合理的和其他系统逻辑,这就是测试就变得很重要。独自计数器击掌,你知道网络功能在训练过程中以某种方式,因为它是使用40验证图像来评估模型的准确性,而且它只贴错了标签,一个40。

dl-engineers-ebook-ch5-validation-accuracy

这是一个好的开始,但即使你有一些信心,该模型适用于40验证图片,你不一定知道它作用于图像,还没有被发现。因此,除了验证数据集使用的培训期间,通常你也会有一个测试数据集,用于确保网络在整个解空间精度是可以接受的。

的柜台,击掌40图片足以验证网络在训练融合,但这并不足以涵盖所有可能的手臂运动网络在现实生活中可能会看到。需要额外的测试之前部署这个网络领域。之后,测试系统和有信心在其实现中,您可以使用仿真软件编码器™构建嵌入式C代码和部署这些逻辑包括手臂的深层神经网络本身。金宝app

系统测试的一部分可能是尝试所有不同的手臂动作,手表可能经验,击掌和non-high五运动。你想要争取尽可能广泛的各种各样的人建立一个代表训练集和捕获整个解空间。为每个实例的用户动作是错误分类的系统,你会保存这些数据,并将它添加到训练数据集进行再培训和完善网络。

重要的是要注意,保证你永远不会有一个完美的运作网络通过抽样整个解空间的一个子集,但是你正在增加的范围你相信它将执行。这是一个标准的深层神经网络方法。现在,没有好的验证深层神经网络系统的方法,所以你通常依靠取样方法像蒙特卡罗方法获得信心在网络在整个解空间。

测试用蒙特卡罗方法是更有可能的情况下为您的项目,你是否正在寻找材料缺陷,在音频挑选口头命令,或者分类射频调制方案。你要训练神经网络集成到您的完整的系统和测试在各种各样的情况。

重要的是,无论你有多少不同的测试运行,总是会有解决方案的部分空间,还没有测试。

dl-engineers-ebook-ch5-monte-carlo

蒙特卡罗方法来测试整个解空间。网络测试的一些解决方案,但是大多数解决方案都没有测试。金宝搏官方网站

这是合成数据可以如此强大的地方。第二章概述了如何综合射频数据训练网络。类似地,您可以使用合成数据生成数以百万计的不同的测试用例,并产生一个非常密集的解空间的采样。这将给你一个系统的信心。

dl-engineers-ebook-ch5-monte-carlo-synth-test-data

蒙特卡罗方法来测试整个解空间。综合测试数据,更可以快速覆盖解决方案的空间。

合成数据击掌项目将是困难的,因为很难准确模型的加速度模式可能与手臂动作和知道哪些运动是击掌庆贺。这就是为什么对于一些项目更容易身体测试网络比综合测试数据。

不管你是否能合成测试数据,你要想最终测试系统在现实世界中真实的硬件。

部分

部署网络

没关系,如果您的代码在仿真工作如果不工作在目标硬件。

确保您的代码的一部分将运行在目标硬件评估网络的大小和执行速度。如果你的网络的规模太大,如果执行需要太长时间,你可以先一个小pretrained网络。将您的项目使用GoogLeNet(700万参数)学习和工作一样,如果你使用传输SqueezeNet参数(100万)?

dl-engineers-ebook-ch5-pretrained-size

如果网络仍然还是太大,而不是寻找更小的pretrained网络,你可以试着网络的大小减少修剪或量化。

修剪删除网络中的一些参数,不贡献分类你的特定数据。

量化意味着单一或双精度重量和偏见在您的网络和量化他们8位整数数据类型。我们的想法是,你仍然可以得到相同的性能从网络,而无需使用高精度的数据类型。看到int8量化和深神经网络为什么受欢迎?为更多的信息。

给你一种减少网络能是什么样子在一个实例中,这是使用的结果深层网络量化器的应用数字转换网络击掌来8位整数。花了几分钟,然后网络压缩75%,没有可衡量的影响其准确性。

dl-engineers-ebook-ch5-deep-network-quantizer

希望你可以看到pretrained网络,传输学习,修剪,和量化,可以得到足够的规模和效率的模型为您的应用程序。

如果网络仍然还是太大,最后一个选项是从头开始构建自己的网络体系结构。这个选项需要最训练数据和初以来最训练时间网络没有任何的概念,所以它必须学习一切。

另一个缺点是它需要很好地理解不同的从头开始创建一个高效的网络架构。

部分

的外卖

在考虑深度学习为您的应用程序时,你需要考虑你的网络的体系结构,对训练数据的访问,是否使用模拟,以及如何获得信心在您的网络和系统作为一个整体。

对每一个项目没有一个答案,但是希望你能开始看到深度学习的好处和可能性。也许你有一个工程问题你现在正在努力的解决方案涉及到能够检测和标签数据中复杂的模式。如果是这样,深度学习是一种方法,您可能希望考虑作为研究的一部分。它可能比你想象的更容易。