Может кто-нибудь объяснить мне, что смысл за этими двумя строками кода отсюда: https://github.com/Newmu/Theano-Tutorials/blob/master/4_modern_net.pyTheano умножения на ноль
acc = theano.shared(p.get_value() * 0.)
acc_new = rho * acc + (1 - rho) * g ** 2
Является ли это ошибкой? Почему мы создаем экземпляр acc с нулем и затем умножаем его на rho в следующей строке? Похоже, что он ничего не добьется и останется нулевым. Будет ли какая-либо разница, если мы заменим «rho * acc» просто «acc»?
Полнофункциональный приводится ниже:
def RMSprop(cost, params, lr=0.001, rho=0.9, epsilon=1e-6):
grads = T.grad(cost=cost, wrt=params)
updates = []
for p, g in zip(params, grads):
acc = theano.shared(p.get_value() * 0.)
acc_new = rho * acc + (1 - rho) * g ** 2
gradient_scaling = T.sqrt(acc_new + epsilon)
g = g/gradient_scaling
updates.append((acc, acc_new))
updates.append((p, p - lr * g))
return updates