Как это понятие градиента в TensorFlow связано с математическим определением градиента?
Документация TensorFlow объясняет функцию
tf.gradients(
ys,
xs,
grad_ys=None,
name='gradients',
colocate_gradients_with_ops=False,
gate_gradients=False,
aggregation_method=None,
stop_gradients=None
)
говоря:
- [it] строит символические производные суммы ys по x в xs.
- ys и xs - это тензор или список тензоров.
- Gradients() добавляет к графику операции для вывода производных от ys по xs.
- ys: Тензор или список тензоров для дифференциации
Мне трудно связать это с математическим определением градиента. Например, согласно википедии, градиент скалярной функции f(x1, x2, x3, ..., xn) является векторным полем (то есть функцией grad f: Rn -> Rn) с определенными свойствами, включающими скалярное произведение векторов. Вы также можете говорить о градиенте f в определенной точке: (градус f)(x1, x2, x3, ..., xn).
Документация TensorFlow говорит о тензорах вместо векторов: можно ли обобщить определение градиента от функций, которые отображают векторы на скаляры, на функции, которые отображают тензоры на скаляры? Есть ли точечное произведение между тензорами?
Даже если определение градиента можно применить к функциям f, которые отображают тензоры в скаляры (с точечным произведением в определении, работающем над тензорами), в документации говорится о дифференцировании самих тензоров: параметр ys представляет собой "Тензор или список тензоров для быть дифференцированным ". Согласно документации "Тензор является многомерным массивом, используемым для вычислений", поэтому тензор не является функцией, как его можно дифференцировать?
Итак, как эта концепция градиента в TensorFlow в точности связана с определением из Википедии?
0 ответов
Можно было бы ожидать, что градиент тензорного потока - это просто якобиан, то есть производная тензора ранга (m) Y против тензора ранга (n) X является тензором ранга (m + n), состоящим из каждой отдельной производной ∂Yj1...jm/∂Xi1...in.
Однако вы можете заметить, что градиент на самом деле не является тензором ранга (m + n), а всегда принимает ранг n тензора X - действительно, похоже, что Tensorflow дает вам градиент скалярной суммы (Y) против X.
Конечно, настоящие якобианы хранятся внутри для вычислений с применением правила цепочки.