离散Hopfield网络(DHNN) 5步Python实现:Hebb规则存储与恢复二值图像
离散Hopfield网络(DHNN) 5步Python实现Hebb规则存储与恢复二值图像在人工智能的经典算法中Hopfield神经网络以其独特的联想记忆能力而闻名。本文将带您用Python从零实现一个完整的离散Hopfield网络(DHNN)并展示如何用它存储和恢复二值图像。不同于理论推导我们将聚焦于工程实践通过可视化结果直观理解网络行为。1. 理解Hopfield网络的核心机制Hopfield网络本质上是一个全连接递归神经网络每个神经元都与其他所有神经元相连。它的神奇之处在于能将输入模式存储为网络的记忆并在接收到部分或噪声干扰的输入时通过动态演化恢复出完整的原始记忆。想象你的大脑看到一张被墨水部分遮盖的老照片时仍能辨认出完整图像的能力——这正是Hopfield网络模拟的联想记忆功能。网络通过以下数学特性实现这一功能对称权重矩阵神经元i到j的连接权重等于j到i的权重($w_{ij}w_{ji}$)无自连接对角线权重始终为零($w_{ii}0$)二值状态每个神经元取值为1(激活)或-1(抑制)import numpy as np import matplotlib.pyplot as plt class HopfieldNetwork: def __init__(self, size): self.size size # 神经元数量 self.weights np.zeros((size, size)) # 权重矩阵2. Hebb规则记忆如何被编码Hebbian学习规则是神经科学中的经典理论简言之就是一起激活的神经元会加强连接。在Hopfield网络中我们用它来计算存储模式对应的权重矩阵$$ w_{ij} \sum_{s1}^{n} x_i^s x_j^s \quad (i \neq j) $$其中$x^s$是第s个存储模式。Python实现仅需几行代码def train(self, patterns): 使用Hebb规则训练网络 for p in patterns: p np.reshape(p, (self.size, 1)) self.weights p p.T # 外积求和 np.fill_diagonal(self.weights, 0) # 对角线置零 return self.weights注意实际应用中需要对模式向量进行二值化处理(如将图像像素值转换为±1)3. 网络动态与能量函数Hopfield网络的演化过程可以看作是在能量景观中寻找最低点的过程。能量函数定义为$$ E -\frac{1}{2} \sum_{i,j} w_{ij}x_ix_j $$网络运行时每个神经元根据以下规则异步更新def _update_neuron(self, x, i): 更新单个神经元状态 activation np.dot(self.weights[i,:], x) return 1 if activation 0 else -1 def evolve(self, x, max_iter100): 异步更新网络状态 energy [] for _ in range(max_iter): i np.random.randint(self.size) # 随机选择神经元 x[i] self._update_neuron(x, i) energy.append(self._calculate_energy(x)) if len(energy) 1 and energy[-1] energy[-2]: break # 能量收敛时停止 return x, energy4. 完整实现从图像到记忆让我们用MNIST手写数字数据集演示完整流程。首先准备数据from sklearn.datasets import load_digits def preprocess_image(img, threshold0.5): 将图像二值化为±1 img (img threshold).astype(np.int8) return img * 2 - 1 # 转换到[-1,1] digits load_digits() patterns [preprocess_image(digits.images[i]) for i in [0,1,2]] # 选择3个数字 patterns [p.flatten() for p in patterns] # 展平为向量创建并训练网络hn HopfieldNetwork(patterns[0].shape[0]) hn.train(patterns)测试网络恢复能力def add_noise(pattern, noise_level0.3): 添加随机噪声 flip_mask np.random.random(pattern.shape) noise_level return pattern * (1 - flip_mask) (-pattern) * flip_mask noisy_input add_noise(patterns[0]) recovered, energy hn.evolve(noisy_input.copy())5. 可视化与性能分析通过绘图直观展示网络行为def plot_results(original, noisy, recovered, energy): fig, axes plt.subplots(1, 3, figsize(12,4)) titles [Original, Noisy Input, Recovered] for ax, img, title in zip(axes, [original, noisy, recovered], titles): ax.imshow(img.reshape(8,8), cmapbinary) ax.set_title(title) plt.figure() plt.plot(energy) plt.xlabel(Iterations) plt.ylabel(Energy) plt.title(Energy Convergence) plt.show() plot_results(patterns[0], noisy_input, recovered, energy)典型输出会显示能量函数随迭代单调递减被噪声污染的输入逐渐恢复为原始模式恢复质量与噪声水平和存储模式数量相关参数影响建议值噪声比例过高会导致恢复失败30%存储模式数过多会引起交叉干扰0.15N迭代次数通常快速收敛50-100进阶讨论网络容量与局限虽然Hopfield网络概念优美但实际应用中需注意存储容量有限经验法则是网络能可靠存储约0.15N个模式(N为神经元数量)伪吸引子问题网络可能收敛到非预期的混合状态现代替代方案对于大规模数据深度自编码器通常表现更好然而Hopfield网络仍然是理解联想记忆和能量最小化原理的绝佳教学工具。在最近的研究中其变体如现代Hopfield网络(2020)甚至展现出与Transformer架构的有趣联系。

相关新闻

Windows BAT脚本 3种管理员权限获取方案对比:VBS、MSHTA与临时文件

Windows BAT脚本 3种管理员权限获取方案对比:VBS、MSHTA与临时文件

Windows BAT脚本管理员权限获取方案深度对比与实战指南在Windows系统自动化运维和开发过程中,管理员权限获取是BAT脚本实现高级系统操作的关键前提。本文将深入解析三种主流技术方案(VBS、MSHTA与临时文件)的实现原理,提供详细的对…

2026/7/6 22:02:47 阅读更多 →
JVM-Sandbox Repeator:无侵入流量录制回放,重塑Java应用问题排查与测试

JVM-Sandbox Repeator:无侵入流量录制回放,重塑Java应用问题排查与测试

1. 项目概述:为什么我们需要流量录制与回放?在Java应用开发,尤其是微服务架构盛行的今天,线上问题排查和功能回归测试的复杂度呈指数级增长。你有没有遇到过这样的场景:一个用户反馈的线上Bug,在开发环境死…

2026/7/6 22:02:47 阅读更多 →
ASM330LHH与PIC18F45K40的运动跟踪系统设计与优化

ASM330LHH与PIC18F45K40的运动跟踪系统设计与优化

1. 运动跟踪技术的革新背景在当今的嵌入式系统和物联网设备中,精确的运动跟踪能力已经成为许多应用的基础需求。从消费电子产品的屏幕旋转和手势识别,到工业设备的振动监测和姿态控制,再到医疗健康领域的活动追踪和康复监测,6自由…

2026/7/6 22:02:47 阅读更多 →

最新新闻

终极指南:如何在Switch和WiiU之间自由转换塞尔达传说旷野之息存档

终极指南:如何在Switch和WiiU之间自由转换塞尔达传说旷野之息存档

终极指南:如何在Switch和WiiU之间自由转换塞尔达传说旷野之息存档 【免费下载链接】BotW-Save-Manager BOTW Save Manager for Switch and Wii U 项目地址: https://gitcode.com/gh_mirrors/bo/BotW-Save-Manager 你是否曾经为《塞尔达传说:旷野之…

2026/7/6 22:55:53 阅读更多 →
OpenCV 4.9 与 MediaPipe 手势识别:3 种方案在树莓派 5 上的实时性能实测

OpenCV 4.9 与 MediaPipe 手势识别:3 种方案在树莓派 5 上的实时性能实测

OpenCV 4.9 与 MediaPipe 手势识别:树莓派 5 上的三种实时方案性能对比当一块信用卡大小的开发板遇上计算机视觉,会碰撞出怎样的火花?树莓派 5 凭借其升级的四核 Cortex-A76 处理器和 VideoCore VII GPU,正在边缘计算领域掀起新的…

2026/7/6 22:55:53 阅读更多 →
ICM-42688-P与PIC32MX675F512L在工业自动化中的高性能应用

ICM-42688-P与PIC32MX675F512L在工业自动化中的高性能应用

1. ICM-42688-P与PIC32MX675F512L的黄金组合解析在工业自动化和机器人控制领域,传感器与处理器的协同工作能力直接决定了系统性能上限。ICM-42688-P作为TDK InvenSense推出的6轴MEMS运动传感器,与Microchip的PIC32MX675F512L微控制器形成的解决方案&…

2026/7/6 22:55:53 阅读更多 →
openGauss 5.0 在鲲鹏920平台 NUMA 优化实战:事务吞吐提升 30% 的 3 个关键配置

openGauss 5.0 在鲲鹏920平台 NUMA 优化实战:事务吞吐提升 30% 的 3 个关键配置

openGauss 5.0在鲲鹏920平台的NUMA优化实战:3个关键配置实现30%事务吞吐提升在当今数据密集型应用爆发的时代,数据库性能优化已成为企业数字化转型的核心课题。作为国产数据库的领军者,openGauss 5.0与华为鲲鹏920处理器的深度结合&#xff0…

2026/7/6 22:53:52 阅读更多 →
GetQzonehistory:三步找回QQ空间全部历史说说的终极完整指南

GetQzonehistory:三步找回QQ空间全部历史说说的终极完整指南

GetQzonehistory:三步找回QQ空间全部历史说说的终极完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经想要找回那些消失在QQ空间中的青春记忆?那…

2026/7/6 22:51:49 阅读更多 →
嵌入式电压管理:高精度检测与实时处理方案

嵌入式电压管理:高精度检测与实时处理方案

1. 嵌入式电压管理的核心挑战与选型思路在工业控制和精密仪器领域,电压管理从来都不是简单的"有电没电"问题。我经历过一个典型的案例:某自动化生产线上的传感器阵列,因为供电电压存在0.3V的波动,导致采集数据出现系统性…

2026/7/6 22:49:47 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻