Как работает расчет градиентной ленты TensorFlow на низком уровне?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как работает расчет градиентной ленты TensorFlow на низком уровне?

Сообщение Anonymous »

Я только что видел какой-то код, который вызвал мой интерес.

Код: Выделить всё

with tf.GradientTape() as g:
y = f(x)

dy_dx = g.gradient(y, x)
< /code>
(код свободно взят из этой ссылки.) Меня интересует понимание программного обеспечения, стоящего за тем, что может выглядеть как «Волшебный код». Вы можете задать такие вопросы, как 

 Почему здесь есть ключевое слово 
? понимать. Это приводит к тому, что функции Magic Dunder __enter __ и __exit __ запускаются, и поэтому я совершенно уверен, что это удобный способ маркировки, где начало и конец расчета градиента. Я бы угадал , чтобы сделать общий код более эффективным - нет никакого смысла вычислять градиенты, если они не нужны, и поэтому нам нужен способ отметить, где мы должны начать и закончить расчеты градиента. API мог бы также выставить .start () и .stop () function.
Вторая точка менее проста для понимания. Мое первоначальное предположение состояло в том, что, возможно, градиенты были аппроксимированы численно. Однако, проведя некоторые исследования, я понимаю, что это не так, и вместо этого используется что -то, что называется автоматической дифференциацией . Численные методы страдают от численных ошибок из -за конечной точности, поэтому неудивительно, что потенциально численное нестабильное алгоритм здесь не используется. < /P>
Я не понимаю, как подключить точки. Контекстный диспетчер используется для обозначения начала и окончания того, где должны быть выполнены некоторые расчеты градиента, и эти расчеты рассчитываются с использованием автоматической дифференциации. Я понимаю, что цепное правило используется, но это не символическая дифференциация. Так что же делает Tensorflow здесь? (Прочитав некоторые ссылки на Auto Diff, я не вижу, как это отличается от применения правил цепочки символической дифференциации. Так что, возможно, я что-то упускаю здесь.) < /P>

Это эффективно имеет большой список операторов If-elseif < /code> для расчета правильной функции? Например, если TensorFlow видит выражение, такое как Matmul (x, y) , содержит ли он просто логические правила, в которых говорится, что d_matmul_d_arg1 = arg2 и d_matmul_d_arg2 = arg1 ? d_matmul_d_arg1 (arg2) так же, как и вычисляет значение Matmul (x, y) с x = ... , y = ... использование обычного численного алгоритма для умножения матрицы? Уровень?

Подробнее здесь: https://stackoverflow.com/questions/796 ... -low-level
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»