Python 贝叶斯神经网络:Hessian函数的计算
我正试图用Python编写几种类型的ANN算法,以便更好地理解/直觉这些算法。我没有使用Scikit learn或任何其他现成的软件包,因为我的目标是教育性的,而不是实用性的。 作为一个示例问题,我使用MNIST数据库() 虽然我执行了简单的1-隐层神经网络和卷积神经网络,但我成功地避免了任何二阶优化方法,因此没有计算Hessian矩阵。然而,接下来我谈到了贝叶斯神经网络,为了优化超参数,Hessian的计算是强制性的 在我的全连接网络中,有784个输入、300个隐藏单元和10个输出单元。所有这些导致238200个权重(+偏差)。 当我试图计算甚至近似Hessian(通过梯度的外积)时,Python会在“MemoryError”上发出通知。即使我将权重的数量减少到~40000,并且没有显示错误消息,我的计算机也会在几分钟后卡住。据我所知,问题在于理想的矩阵非常庞大。 我浏览了几篇关于贝叶斯NNs的文章,发现作者通常使用不超过10或20个输入和隐藏单元的网络架构,因此参数比我的少得多。然而,我没有看到任何关于此类限制的明确声明 如何将贝叶斯方法应用于MNIST的神经网络 更一般地说: 是否可以将贝叶斯方法应用于此(238200个权重)或更大的体系结构?Python 贝叶斯神经网络:Hessian函数的计算,python,machine-learning,neural-network,mnist,hessian-matrix,Python,Machine Learning,Neural Network,Mnist,Hessian Matrix,我正试图用Python编写几种类型的ANN算法,以便更好地理解/直觉这些算法。我没有使用Scikit learn或任何其他现成的软件包,因为我的目标是教育性的,而不是实用性的。 作为一个示例问题,我使用MNIST数据库() 虽然我执行了简单的1-隐层神经网络和卷积神经网络,但我成功地避免了任何二阶优化方法,因此没有计算Hessian矩阵。然而,接下来我谈到了贝叶斯神经网络,为了优化超参数,Hessian的计算是强制性的 在我的全连接网络中,有784个输入、300个隐藏单元和10个输出单元。所有这
或者它只适用于相对较小的网络?您可以尝试梯度上升,它近似于黑森曲线,并且倾向于节省(相当大的)内存。有一个问题。我猜你在考虑L-BFGS(),BFGS需要与典型hessian方法相同的内存量,因此如果OPs问题在于内存消耗,BFGS将失败。谢谢你的澄清。