为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Python 的 AdaDelta 优化算法

使用 Python 的 AdaDelta 优化算法

守着星空守着你 2021-10-05 16:02:29
我正在研究 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。
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我认为问题是self.e_grad_w一个ndarrayof 形状(2,),它进一步包含两个ndarray具有 2d 形状的附加s,而不是直接包含数据。这似乎是在 中初始化的e_grad_initializer,其中nabla_w具有相同的结构。我一直没有追踪这是从哪里来的,但我相信一旦你解决了这个问题,问题就会得到解决。


查看完整回答
反对 回复 2021-10-05
  • 1 回答
  • 0 关注
  • 295 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信