Как диспетчер контекста tensorflow GradientTape знает, какие переменные отслеживать? - PullRequest
0 голосов
/ 14 июля 2020

Итак, я пытался понять, как именно работает GradientTape тензорного потока.

Я могу определить пользовательскую операцию в простой python функции, используя тензоры, и достаточно, чтобы переменная была указана как tf.Variable .

Мне интересно, что именно делает тензорный поток в реализации диспетчера контекста.

Я просмотрел исходный код и дошел до этого: https://github.com/tensorflow/tensorflow/blob/2c2fdd3205a8d31e5f09a71ac7eb52b8c0294a60/tensorflow/python/eager/tape.py#L52

def push_tape(tape):
  """Pushes an existing tape onto the tape stack."""
  pywrap_tensorflow.TFE_Py_TapeSetAdd(tape._tape)  # pylint: disable=protected-access

который, кажется, использует некоторые обертки, и я не могу проследить дальше.

Мой вопрос: отслеживает ли тензорный поток переменные внутри на низком уровне привязки, или это делается в python? Как работает внутреннее отслеживание переменных, чтобы я мог использовать простой синтаксис c из приведенного ниже?

with tf.GradientTape as tape:
   ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...