keras基本优化器如何工作?

时间:2017-07-04 08:24:06

标签: machine-learning neural-network deep-learning keras keras-2

以下是来自get_updates SGD keras的{​​{1}}代码moments = [K.zeros(shape) for shape in shapes] self.weights = [self.iterations] + moments for p, g, m in zip(params, grads, moments): v = self.momentum * m - lr * g # velocity self.updates.append(K.update(m, v)) 的一部分

moments

观察:

由于m变量是零张量的列表。 for loop中的每个p都是零张量,形状为self.momentum * m。然后在循环的第一行的<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="1000dp" /> //your radius <stroke android:width="3px" android:color="#FFF" /> //your stroke size </shape> 只是标量乘以零张量,这导致零张量。

问题

我在这里缺少什么? 谢谢!

1 个答案:

答案 0 :(得分:2)

是 - 在此循环的第一次迭代期间,m等于0.但是,此行中的当前v值更新了它:

self.updates.append(K.update(m, v))

因此,在下一次迭代中,您将拥有:

v = self.momentum * old_velocity - lr * g  # velocity

其中old_velocityv的先前值。