用模拟退火训练神经网络

时间:2019-05-22 08:20:21

标签: python neural-network simulated-annealing

我正在尝试通过模拟退火训练一个简单的神经网络。我编程了一个神经网络,其输入层为784个输入节点(28 x 28像素:我正在使用MNIST数据库进行训练),一个包含100个节点的隐藏层和一个具有10个末端节点的输出层。我还编写了一个模拟退火算法,该算法采用一个输入向量,并最小化一个函数以获得所需的输出向量。

现在我的问题是如何将两者结合?我读了几篇论文,但是他们没有具体说明如何完成。我认为这个主意如下:

初始化一个随机权重的向量(在我的情况下,向量的长度为79,400;对于隐藏层的输入层,权重为78,400;对于输出层的隐藏层,权重为1,000)。计算相应的输出(当然是不正确的)和平方误差的总和。然后遍历权重向量,并通过加或减一个小数字来略微调整每个权重。对于每次调整,请再次计算平方误差的总和,然后查看哪个调整(相加或相减)会减小该值。在我看来,重复此过程应使权重与所需的输出相对应。

我想知道这种方法是否可行。如果是这样,这似乎是一个非常耗时的过程,我想知道是否有更有效的方法来做到这一点?

谢谢!

0 个答案:

没有答案