Как ТФ.градиенты работы в 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.градиенты для получения дополнительной информации.