首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >贝叶斯神经网络: Hessian的计算

贝叶斯神经网络: Hessian的计算
EN

Stack Overflow用户
提问于 2015-11-06 20:53:24
回答 1查看 674关注 0票数 2

我正在尝试用Python编写几种类型的ANN算法的代码,以便更好地理解/直观地理解它们。我没有使用Scikit-learn或任何其他现成的软件包,因为我的目标是教育而不是实用。作为示例问题,我使用MNIST数据库(http://yann.lecun.com/exdb/mnist/)。

虽然我执行了简单的1-隐藏层NN和卷积NN,但我成功地避免了任何二阶优化方法,因此,没有计算Hessian矩阵。然而,然后我得到了贝叶斯神经网络,为了优化超参数,Hessian的计算是强制性的。

在我的全连接网络中,有784个输入,300个隐藏单元和10个输出单元。所有这些都会导致238200个权重(+偏差)。当我尝试计算甚至近似Hessian (通过梯度的外积)时,Python通知"MemoryError“。即使我将权重的数量减少到~40000,并且没有显示错误消息,我的计算机在几分钟后也会卡住。据我所知,问题是理想的矩阵非常巨大。我浏览了几篇关于贝叶斯神经网络的文章,注意到作者通常使用不超过10或20个输入和隐藏单元的网络体系结构,因此具有比我少得多的参数。然而,我没有看到任何关于这种限制的明确声明。

如何才能将贝叶斯方法应用于MNIST的NN?

更普遍的是:是否有可能将贝叶斯方法应用于此(238200权重)或更大的体系结构?或者它只适用于相对较小的网络?

EN

回答 1

Stack Overflow用户

发布于 2015-11-07 00:27:41

您可以尝试使用the BFGS algorithm进行梯度上升,它近似于Hessian,并且倾向于节省(相当大的)内存。有一个implementation in Scipy

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33567260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档