Skip to content

Instantly share code, notes, and snippets.

@vchollati
Forked from Newmu/adam.py
Last active August 29, 2015 14:13
Show Gist options
  • Save vchollati/0359756576237c2b46da to your computer and use it in GitHub Desktop.
Save vchollati/0359756576237c2b46da to your computer and use it in GitHub Desktop.
def Adam(cost, params, lr=0.0002, b1=0.1, b2=0.001, e=1e-8):
updates = []
grads = T.grad(cost, params)
i = theano.shared(floatX(0.))
i_t = i + 1.
fix1 = 1. - b1**(i_t)
fix2 = 1. - b2**(i_t)
lr_t = lr * (T.sqrt(fix2) / fix1)
for p, g in zip(params, grads):
m = theano.shared(p.get_value() * 0.)
v = theano.shared(p.get_value() * 0.)
m_t = (b1 * g) + ((1. - b1) * m)
v_t = (b2 * T.sqr(g)) + ((1. - b2) * v)
g_t = m_t / (T.sqrt(v_t) + e)
p_t = p - (lr_t * g_t)
updates.append((m, m_t))
updates.append((v, v_t))
updates.append((p, p_t))
updates.append((i, i_t))
return updates
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment