2017-11-15 10:03:39 584浏览
近日,谷歌在其官方博客上开源了「Tangent」,一个用于自动微分的源到源Python库;它通过Python基础教程中Python函数 f 生成新函数,来计算 f 的梯度,从而实现更好的梯度计算可视化,帮助用户更容易地编辑和调试梯度;本文还扼要概述了Tangent API,包括如何使用 Tangent 在Python中生成易于理解、调试和修改的梯度代码。
Tangent 是一个免费、开源的新 Python库,用于自动微分。和目前已有的机器学习库不同,Tangent 是一个源到源(source-to-source)的系统,利用 Python 函数 f 生成一个新的 Python 函数,来计算 f 的梯度。这为用户提供了更好的梯度计算可视化,使用户可以容易地对梯度进行编辑和调试。
Tangent在调试和设计机器学习模型上有如下特征:
1、易于调试反向传播过程
2、快速编辑和调试梯度
3、正向模式(Forward mode)自动微分
4、高效的 Hessian 向量内积(Hessian-vector products)
5、代码优化
本文对Tangent API进行了概述,包括如何使用Tangent在Python中生成易于理解、调试和修改的梯度代码。
神经网络(NN)使机器学习模型处理图像、视频、音频和文本的能力出现巨大进步。训练神经网络在这些任务上获得高性能的基本抽象概念是一个有着 30 年历史的思想——「反向模式自动微分」(也叫做反向传播),它由神经网络中的两个传播过程组成:首先运行「前向传播」计算每一个节点的输出,然后运行「反向传播」计算一系列导数以决定权重的更新率,从而提高模型的准确性。
训练神经网络和在新型架构上做研究需要准确、高效和简易地计算这些导数。当模型训练结果不好时,或者尝试建立一些尚未理解的东西时,调试这些导数的能力非常必要。自动微分,或简称为「autodiff」,是一种计算表征一些数学函数的计算机程序的导数的技术,并可以在几乎所有的机器学习库中实现。
目前已有的库通过追踪程序的执行(在运行时,比如 TF Eager、PyTorch和Autograd)或建立动态数据流图然后对图微分(预编,比如 TensorFlow),实现自动微分。与之相反,Tangent能自主在 Python 源代码上进行预编的自动微分,并生成 Python 源代码作为其输出。
因此,你可以把自动微分代码当做程序的余下部分进行阅读。对于那些不仅想在 Python 编写模型,还希望在不牺牲速度和灵活性的前提下阅读和调试自动生成导数的代码的研究者和学生,Tangent是很有用的。
用Tangent 编写的模型易于检查和调试,而不需要特殊的工具或间接的方式。Tangent能提供其它Python机器学习库没有的额外自动微分的特征,具有强大的性能,并和TensorFlow 以及Numpy 兼容。
以上就是关于谷歌开源Tangent:一个用于自动微分的源到源Python库的介绍,希望可以帮到想要学习或了解Python开发工程师的朋友们,想要学习Python开发一定要选择专业的Python开发培训机构。扣丁学堂有专业的老师和课程体系,全面教导学员专业的Python开发知识。还有大量的Python培训视频教程供学员学习,定会让你快速学习,高效就业。扣丁学堂python技术交流群:279521237 。
关注微信公众号获取更多学习资料