Как ТФ.градиенты работы в TensorFlow
Я линейная модель как ниже я хотел бы получить вектора градиента относительно W и B.
# tf Graph Input
X = tf.placeholder("float")
Y = tf.placeholder("float")
# Set model weights
W = tf.Variable(rng.randn(), name="weight")
b = tf.Variable(rng.randn(), name="bias")
# Construct a linear model
pred = tf.add(tf.mul(X, W), b)
# Mean squared error
cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples)
однако, если я попробую что-то вроде этого, где стоимость является функцией cost(x,y,w,b)
и я хочу, только градиенты в отношении w and b
:
grads = tf.gradients(cost, tf.all_variable())
мои заполнители также будут включены (X и Y).
Даже если я получу градиент с [x,y,w,b]
как узнать, какой элемент градиента принадлежит каждому параметру, так как это просто список без имен, к какому параметру производная берется в отношении?
в этом вопросе я использую части этой код и я строю на этой вопрос.
1 ответов
цитирование документов для tf.gradients
строит символические частные производные суммы ys w.r.т. x в xs.
так, это должно работать:
dc_dw, dc_db = tf.gradients(cost, [W, b])
здесь tf.gradients()
возвращает градиент cost
wrt каждый тензор во втором аргументе в виде списка в том же порядке.
читать tf.градиенты для получения дополнительной информации.