Если вы переходите по маршруту регулярных выражений, в примере tghw есть ошибка.
<!-- WON'T WORK - item[0] is an index, not an item -->
var escaped = html;
var findReplace = [[/&/g, "&"], [/</g, "<"], [/>/g,">"], [/"/g,
"""]]
for(var item in findReplace) {
escaped = escaped.replace(item[0], item[1]);
}
<!-- WORKS - findReplace[item[]] correctly references contents -->
var escaped = html;
var findReplace = [[/&/g, "&"], [/</g, "<"], [/>/g, ">"], [/"/g, """]]
for(var item in findReplace) {
escaped = escaped.replace(findReplace[item[0]], findReplace[item[1]]);
}
compute_gradients
вычисляет только градиенты, все другие дополнительные операции, соответствующие конкретным алгоритмам оптимизации, выполняются в apply_gradients
. Код в обновлении является одним доказательством, другим доказательством является следующий рисунок, вырезанный из тензорной доски, где Адам соответствует операции compute_gradient
.
Ниже приведен алгоритм Адама, представленный в книге глубокого обучения. Что касается вашего вопроса, здесь важно отметить градиент тэты (записанный как лапласиан тэты) от второго до последнего шага.
Что касается того, как TensorFlow вычисляет, это двухэтапный процесс оптимизации (то есть минимизация )
В первом шаг все необходимые ингредиенты для окончательных градиентов вычисляются. Итак, второй шаг - просто применить обновление к параметрам на основе градиентов, вычисленных на первом шаге, и скорости обучения (lr
).