machine-learning - machine - tensorflow course
Cómo trabajan los graduados en TensorFlow (1)
Citando los documentos para tf.gradients
Construye derivados parciales simbólicos de la suma de ys wrt x en xs.
Entonces, esto debería funcionar:
dc_dw, dc_db = tf.gradients(cost, [W, b])
Aquí, tf.gradients()
devuelve el gradiente de cost
wrt de cada tensor en el segundo argumento como una lista en el mismo orden.
Lea tf.gradients para más información.
Dado que tengo un modelo lineal como el siguiente me gustaría obtener el vector de gradiente con respecto a W y 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)
Sin embargo, si intento algo como esto, el costo es una función del cost(x,y,w,b)
y solo quiero gradientes con respecto a w and b
:
grads = tf.gradients(cost, tf.all_variable())
Mis marcadores de posición también se incluirán (X e Y). Incluso si obtengo un gradiente con [x,y,w,b]
¿cómo sé qué elemento del gradiente pertenece a cada parámetro, ya que es solo una lista sin nombres a qué parámetro se ha derivado la derivada con respecto a ?
En esta pregunta, estoy usando partes de este código y aprovecho esta pregunta.