tangent
程序员文章站
2024-03-14 21:56:35
...
https://github.com/google/tangent
这是一个python写的,可以自动求导的库。
之前的深度学习框架,有两个相对矛盾的点需要解决
1. 提前计算数据流,将需要求导函数(将框架里面的算子自动转化成导数函数,比如 f(x) = x * x 的导数函数是 p(x) = 2 * x ),这个能提高执行效率,所以graph 构建的code不是真实model执行的过程,code执行的时候不涉及data。 tensorflow是提前计算
2. 模型即时代码,这个和我们原始的python代码风格一致,代码执行到哪一步,数据和求导就是该步骤的真实求值,code,model,data是同时进行的,你代码trace到哪里,数据run到哪一步,求导就可以到哪里,debug是很简单的,比如 Pytorch
tanget工具,它是将你的函数代码转换成python的求导代码,输出的是一个求导函数
兼容函数:
1. TensorFlow
2. NumPy
支持的基础计算:
1. basic arithmetic: +,-,/,**,*
2. pieces of syntax: for, if, while
3. TensorFlow Eager functions: tf.reduce_sum, tf.exp, tf.matmul, ...
作用:
1. 傻瓜式求导的实现,代码直接嵌入。
2. 方便求导debug
示例:
In [1]: import tangent
...: def f(x):
...: a = x * x
...: b = x * a
...: c = a + b
...: return c
...:
...: forward_df = tangent.grad(f, mode='forward')
...: forward_df(3.0,1.0)
...:
Out[1]: 33.0
下一篇: Spring(一)
推荐阅读