Я использую оп «присваивать» для изменения значения переменных вместо «=», но я обнаружил, что градиент, который я получил, совсем другой. Может ли кто-нибудь сказать мне разницу и почему? благодаря! Как изменения W = w1 до OP1 = tf.assign (ш, w1) sess.run (ОР1)(Tensorflow) Устанавливает ли op назначение вычисления градиента?
ответ
=
и tf.assign
различные операции.
=
является питон операция, в которой присваивается значение питона переменной питона
tf.assign
является операцией Tensorflow, которая присваивает значение переменной исх и возвращает операцию присвойте.
=
выполнен в python и не влияет на график вычислений. tf.assign
- это узел в вычислительном графе.
Чтобы понять, давайте запустим этот простой сценарий
import tensorflow as tf
x = tf.Variable(1)
y = tf.Variable(2)
x = y
print(x.name, y.name)
a = tf.Variable(1)
b = tf.Variable(2)
# override a, otherwise a content is 1
a = a.assign(b)
print(a.name, b.name)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run([x, y, a, b]))
print(x.name, y.name)
выходы Variable_1:0 Variable_1:0
потому что =
выполняется в питона и вы перезаписать переменную x
.
print(a.name, b.name)
выходы Assign:0 Variable_3:0
, потому что вы определили назначение op в вычислительном графе, теперь a
является назначением op.
При запуске определенного графика, вы получите:
[2, 2, 2, 2]
Но эти значения вычисляются по-разному: один является вычислением в графе, другие нет.
Если вы забыли назначить a
к Назначают оп созданных с tf.assign
(таким образом, вы измените строку a = a.assign(b)
на a.assign(b)
), а затем, когда вы оцениваете график, вы получите:
[2, 2, 1, 2]
- 1. Tensorflow: реализация градиента для пользователя op в C++?
- 2. tensorflow custom op gradient
- 3. Tensorflow плотное описание градиента?
- 4. Недетерминированные вычисления градиента
- 5. Назначить op в TensorFlow: каково возвращаемое значение?
- 6. Шкала градиента оп в Tensorflow
- 7. Tensorflow: Написание Op в Python
- 8. Есть ли «стандартный» способ вычисления численного градиента?
- 9. TensorFlow: изменить tanh BasicRNNCell на другой op?
- 10. Ошибка градиента Max-Pool (Tensorflow 0.9rc0)
- 11. Строительство нового TensorFlow Op, есть ли система сборки?
- 12. остановка оптимизатора градиента в TensorFlow
- 13. Tensorflow: Как написать op с градиентом в python?
- 14. TensorFlow: Выполнение вычисления потерь
- 15. Добавление новой Op в Tensorflow: функции формы
- 16. tensorflow new op, который использует внешние библиотеки
- 17. Как «добавить» Op в начале графика TensorFlow?
- 18. Можно ли вычислить два вида градиента отдельно в tensorflow
- 19. Есть ли векторизованный способ вычисления градиента в sympy?
- 20. Обработка декомпозиции из вычисления градиента/потерь
- 21. Как ввести случайный шум в ядро тренировки Op в TensorFlow?
- 22. вычисления градиента и матриц Гесса в R
- 23. Tensorflow Op Нейминг для Последовательные работает в интерактивном IPython терминале
- 24. Tensorflow: как заменить узел на графике вычисления?
- 25. Как сделать обычную Op в TensorFlow импортируемой в Python?
- 26. tensorflow add new op: может attr принять скалярный тензор?
- 27. Невозможно загрузить настроенный op shared lib в tensorflow
- 28. Tensorflow: что обозначает индекс в CUDA_1D_KERNEL_LOOP (index, nthreads) op user
- 29. R: Назначение цветов значения/цвета градиента палитры
- 30. Условное назначение значений тензора в TensorFlow
Спасибо много для вашего объяснения. Но не могли бы вы рассказать мне, как назначение op будет способствовать вычислению градиента? Я действительно смущен этим. – Andy
На самом деле я хочу изменить значение переменных без изменения вычисления градиента, – Andy
Если он используется правильно, он не меняет вычисления градиента. Tensorflow использует автоматическое дифференцирование для вычисления градиента, поэтому присваивание op просто создает новый узел в вычислительном графе, который содержит назначенную переменную. Если вы вычислите градиент, текущий поток этого узла, он пройдет без каких-либо изменений. Обычно вы видите различия в результатах градиента, если вы путаете assign и = ops, потому что вы запутаетесь с узлами графов. – nessuno