此视频突出显示查找表优化功能,以便为SIGMOID函数生成有效查找表,这是深度学习网络中使用的关键激活功能。然后,我们将相对加速与Arduino到期的相对加速®和stmicroelectronics.®发现板在循环仿真中使用生成的硬件代码。
查找表是嵌入式设计的关键构造,通常用于加快算法的某些功能的运行时执行。例如,复杂的TRIG函数通常替换为更有效的LUT实现。
让我们尝试一个简单的实验 - 将相同的原则应用于Sigmoid函数,调查我们如何尤其可以在边缘上加速深度学习推理性能。
SIGMOID函数是神经网络的关键构建块,是深度学习网络中使用的常用非线性激活功能之一。
在这里,我们有一个简单的Simulink子系金宝app统,可以模拟SIGMOID函数。我将使用查找表优化应用程序来生成最佳LUT,指定输入和输出数据类型。由于这是一个有界函数,因此我可以在输出上指定界限,最后最终对输出的容差为1%。
一旦解决了优化问题,我们就可以查看比较图以验证LUT近似的错误是否在我们指定的公差范围内。
现在作为下一步,允许从SigMoid函数和生成的LUT生成C代码,并将其部署到像Arduino Loard这样的Cortex M平台。
我们使用硬件循环仿真来运行生成的代码,其中包含Simulink的输入。金宝app在此模式下运行代码的一些开销,但这仍然可以让我们对相对执行速度进行良好的比较。
您可以从执行配置文件中看到,arduino在arduino更快的2.5 x。我在基于Cortex M7的STMICRO发现板上重复了同样的测试。这是一个绘图,显示相对加速带有不同数据类型的查找表。
实际上,如果您可以在所有神经元之间共享查找表近似,则可以扩展,进一步将执行速度逐次降低。您可以使用与双曲线切线等其他激活功能相同的实验。
要了解有关在设计中优化LUTS的更多信息,请参阅视频下方的其他链接。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。