我正在研究 AdaDelta 优化算法,所以我尝试在 Python 中实现它,但是我的代码有问题,因为我收到以下错误:
AttributeError: 'numpy.ndarray' 对象没有属性 'sqrt'
我没有找到导致该错误的原因。根据消息,是因为这行代码:
rms_grad = np.sqrt(self.e_grad + epsilon)
这条线类似于这个等式:
RMS[g]t=√E[g^2]t+ϵ
我在这篇文章中得到了算法的核心方程:http : //ruder.io/optimizing-gradient-descent/index.html#adadelta
还有一个细节:我正在E[g^2]t像这样初始化矩阵:
self.e_grad = (1 - mu)*np.square(nabla)
其中 nabla 是梯度。类似于这个等式:
E[g2]t = γE[g2]t−1 + (1−γ)g2t (第一项在第一次迭代中为零,就像上面的代码行一样)
所以我想知道我是否以错误的方式初始化 E 矩阵,或者我是否在不恰当地做平方根。我尝试使用该pow()功能,但它不起作用。如果有人能帮我解决这个问题,我将不胜感激,我已经尝试了几个星期。
andersource 要求的其他详细信息:
这是 github 上的完整源代码:https : //github.com/pedrovbeltran/neural-networks-and-deep-learning/blob/experimental/modified-networks/network2_with_adadelta.py。
肥皂起泡泡
相关分类