鉴于我有一个线性模型,我希望得到关于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]
的渐变,我如何知道渐变中哪个元素属于每个参数,因为它只是一个没有名称的列表,哪个参数与衍生物有关?
答案 0 :(得分:25)
引用@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
构造ys w.r.t之和的符号偏导数。 x在xs。
所以,这应该有效:
tf.gradients
此处,dc_dw, dc_db = tf.gradients(cost, [W, b])
将第二个参数中每个张量的tf.gradients()
个渐变返回为相同顺序的列表。
阅读tf.gradients了解详情。