首页 > 编程 > Python > 正文

使用Python构建Hopfield网络的教程

2020-02-23 00:43:46
字体:
来源:转载
供稿:网友

 热的东西显然会变凉。房间会会人沮丧地变得凌乱。几乎同样,消息会失真。逆转这些情况的短期策略分别是重新加热、 做卫生和使用 Hopfield 网络。本文向您介绍了三者中的最后一个,它是一个只需要特定的参数就可以消除噪声的算法。net.py 是一个特别简单的 Python 实现,将向您展示它的基本部分如何结合到一起,以及为何 Hopfield 网络有时可以自失真的图案中 重新得到原图案。尽管这个实现有局限性,不过仍然可以让您获得关于 Hopfield 网络的很多有益且有启发作用的经验。
您寻求的是什么?

我假定您是因为遇到了一些计算上的问题而来阅读本文。有人向您建议,一些神经网络算法可能会提供解决方案。具体说, 建议是说您可以使用一个 Hopfield 网络。我进一步假设您需要有一个大致的想法,以使得您可以决定那个建议是否切实 可行而且确保深入的研究。下面这个 Hopfield 网络的非常缩略的应用可能会引导您着手解决问题。

首先,您的问题有一组基本的用 -1 和 +1 编码的图案。如果需要,它们可以用 0 和 +1 编码。这些图案可以是邮票的规格化的 二进制图案(参阅 参考资料)。下一个要素是偏离这一基础的一组图案。您寻求的是创建代码,以 使得可以输入不正常的图案而输出应得的一个基本图案。因而您寻求的将是一个算法,可以输入一个对特定邮票的编码描述,然后 输出应得的一个基本邮票图案。您搜索不确定会成功。有可以接受的对您的计划产生负面影响的失败率。对您来说,会有一个不 会显著地影响您的项目的邮票误识别的比率。

如果这使您想起了您的问题,下面可能会是您的解决方案设计的开始。在结束之前,您最好应该能回答出基本的问题。 这个 Hopfield 是什么?它如何工作?它的局限性是什么?它可以为我做什么?我希望用更多的时间来研究它吗?

图案及其失真

让我们首先来看将会失真而随后被重新获得的五个任意图案。它们可以可视化地表示为 10 乘 10 的黑白方块矩阵。图 1 展示了第一个图案,p1。
图 1. p1 的可视化表示

2015414161014280.jpg (301×301)

 点击 net.py 中 p2到 p5 的任意一个,可以显示其他的图案。为了编码,这五个图案被初始描述为 Python 列表。 这样,举例来说,第一个图案的描述见清单 1。
清单 1. 图案 p1

    p1 = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1] ]            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表