针对经典优化器的梯度评估

时间:2018-03-06 16:29:10

标签: python tensorflow gradient-descent

我有以下问题。我想测试tf.gradients函数,所以我用一个带有softmax和

的神经元开发一个网络
W = tf.Variable(tf.zeros([10, 784]), dtype=tf.float32)
b = tf.Variable(tf.zeros([10,1]), dtype=tf.float32)

y_ = tf.nn.softmax(tf.matmul(W,X_)+b)
cost = - tf.reduce_mean(Y * tf.log(y_)+(1-Y) * tf.log(1-y_))

grad_W, grad_b = tf.gradients(xs=[W, b], ys=cost)

然后我用

更新权重
new_W = W.assign(W - learning_rate_ * (grad_W))
new_b = b.assign(b - learning_rate_ * (grad_b))

现在我想将它与标准优化器进行比较

optimizer = tf.train.GradientDescentOptimizer(learning_rate_).minimize(cost)
有趣的是,成本函数(在两种情况下相同)出现几乎相同,但并不完全。我想知道为什么。舍入错误?或tf.train.GradientDescentOptimizer做一些略有不同的事情?在这里给你一个想法是成对的值(带渐变和优化器)

0.993107 - 0.993085
0.953979 - 0.953984

任何人都可以解释一下吗?

编辑:开头有趣(epoch = 0)两个值相同。这似乎是一个错误,每个时代都会增加成本函数......

谢谢,翁贝托

0 个答案:

没有答案
相关问题