以下是来自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>
只是标量乘以零张量,这导致零张量。
我在这里缺少什么? 谢谢!
答案 0 :(得分:2)
是 - 在此循环的第一次迭代期间,m
等于0.但是,此行中的当前v
值更新了它:
self.updates.append(K.update(m, v))
因此,在下一次迭代中,您将拥有:
v = self.momentum * old_velocity - lr * g # velocity
其中old_velocity
是v
的先前值。