TensorFlow 中的 Wengert List 在哪里?
Where is Wengert List in TensorFlow?
TensorFlow使用反向模式自动微分(reverse mode AD),如图https://github.com/tensorflow/tensorflow/issues/675.
反向模式 AD 需要一个称为 Wengert 列表的数据结构 - 请参阅 https://en.wikipedia.org/wiki/Automatic_differentiation#Reverse_accumulation。
但是,使用关键字“Wengert List”搜索 TensorFlow 存储库时,我一无所获。
他们是使用不同的名称,还是摆脱了 Wengert List?如果可以,怎么做?
AD 术语非常古老。它是在没有 Python 并且事情很复杂的时候发明的。现在您可以为此目的使用常规 Python 列表。
反向AD的实现在gradients_impl.py
here
的gradients
函数中
用于存储磁带的数据结构在 line 532 上初始化,它是一个 Python 队列
# Initialize queue with to_ops.
queue = collections.deque()
TensorFlow 2 与 JAX 和 Autograd 一样使用 Wengert 列表(磁带)。这是因为这些工具使用某种 gradient_tape
来跟踪对变量的操作。
Tensorflow 1 没有使用 Wengert 列表来跟踪正在执行的计算,而是使用静态图来跟踪正在执行的计算。这具有一定的性能优势,但限制了 TensorFlow 1 的功能。
However, searching through the TensorFlow repository with the keyword "Wengert List", but I get nothing.
这是因为 TensorFlow 不是基于磁带的 AD,它是基于图的 AD 系统。
Wengert 列表是描述操作最初执行顺序的磁带。
还有基于源代码转换的 AD,该系统的一个很好的例子是 Tangent。
如今几乎没有人再使用磁带(Wengert 列表)。例如检查什么 PyTorch does (Page 2).
TensorFlow使用反向模式自动微分(reverse mode AD),如图https://github.com/tensorflow/tensorflow/issues/675.
反向模式 AD 需要一个称为 Wengert 列表的数据结构 - 请参阅 https://en.wikipedia.org/wiki/Automatic_differentiation#Reverse_accumulation。
但是,使用关键字“Wengert List”搜索 TensorFlow 存储库时,我一无所获。
他们是使用不同的名称,还是摆脱了 Wengert List?如果可以,怎么做?
AD 术语非常古老。它是在没有 Python 并且事情很复杂的时候发明的。现在您可以为此目的使用常规 Python 列表。
反向AD的实现在gradients_impl.py
here
gradients
函数中
用于存储磁带的数据结构在 line 532 上初始化,它是一个 Python 队列
# Initialize queue with to_ops.
queue = collections.deque()
TensorFlow 2 与 JAX 和 Autograd 一样使用 Wengert 列表(磁带)。这是因为这些工具使用某种 gradient_tape
来跟踪对变量的操作。
Tensorflow 1 没有使用 Wengert 列表来跟踪正在执行的计算,而是使用静态图来跟踪正在执行的计算。这具有一定的性能优势,但限制了 TensorFlow 1 的功能。
However, searching through the TensorFlow repository with the keyword "Wengert List", but I get nothing.
这是因为 TensorFlow 不是基于磁带的 AD,它是基于图的 AD 系统。
Wengert 列表是描述操作最初执行顺序的磁带。
还有基于源代码转换的 AD,该系统的一个很好的例子是 Tangent。
如今几乎没有人再使用磁带(Wengert 列表)。例如检查什么 PyTorch does (Page 2).