28离散Hopfield神经网络的联想记忆数字识别(附matlab)

2024-02-20 10:50

本文主要是介绍28离散Hopfield神经网络的联想记忆数字识别(附matlab),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.简述

       学习目标:利用离散Hopfield神经网络进行联想记忆数字识别

 

1982年,美国加州理工学院的J.Hopfield教授提出了一种单层反馈神经网络,称为Hopfield网络[1]。Hopfield网络是一种循环的神经网络,从输出到输入有反馈连接。Hopfield网络可以作为联想存储器,有称为联想记忆网络。

Hopfield网络分为离散型(DHNN, discrete Hopfield Neural Network)连续型(CHNN, Continues Hopfield Neural Network)两种网络模型。

1、离散Hopfield神经网络

1.1、Hopfield网络的结构

最初提出的Hopfield网络是离散网络,输出值只能取0或者1,风别表示神经元的抑制和兴奋状态。

仅考虑中间层神经元的节点,发现,每个神经元的输出都成为其他神经元的输入,每个神经元的输入都来自于其他神经元。神经元输出的数据经过其他神经元之后最终又反馈给自己。

 Hopfield网络的稳定性

Hopfield网络按神经动力学的方式运行,工作过程为状态的演化过程,对于给定的初始状态,按”能量“减小的方式演化,最终达到稳定状态。

动力系统:指按时间发展的系统
非线性动力学:是研究非线性动力系统的各种运动状态的定性和定量变化规律(即动力学特性),尤其是系统长期行为。

对于反馈网络来说,稳定性是至关重要的性质,但反馈网络不一定都能稳定收敛。网络从初态开始,经过有限次递归之后,如果其状态不再发生变化,则称该网络是稳定的。网络状态最终会收敛到一个稳定的值,因此是稳定的。

不稳定的网络往往是发散到无穷远的系统,在离散Hopfield网络中,由于输出只能取二值化的值,,因此不会出现无穷大的情况,此时,网络出现有限幅度的自持震荡,在有限个状态中反复循环,称为有限环网络

在有限环网络中,系统在确定的几个状态中循环往复。系统也可能不稳定收敛于一个确定状态,而是在无限多个状态之间变化,但轨迹并不发散到无穷远,这种现象称为混沌。

如果Hopfield网络是稳定的,则称一个或者若干个稳定的状态时的解)为网络的吸引子,能最终演化为该吸引子的初始状态集合,称为该吸引子的吸引域。

设计离散Hopfield网络

Hopfield网络可以用于联想记忆,因此又称联想记忆网络。与人脑的联想记忆功能类似,Hopfield网络实现联想记忆需要两个阶段:

1、记忆阶段:在记忆阶段,外界输入的数据,使得系统自动调整网络的权值,最终用合适的权值使系统具有若干个稳定状态,即吸引子。其吸引域半径定义为吸引子所能吸引的状态的最大距离。吸引域半径越大,说明联想能力越强。联想记忆网络的记忆容量定义为吸引子的数量。

2、联想阶段:在联想阶段,对于给定的输入模式,系统经过一定的演化过程,最终稳定收敛于某个吸引子。

网络中神经元的个数与输入向量长度相同。初始化完成后,根据下式反复迭代,直到神经元的状态不发生改变为止。此时输出的吸引子就是对应输入进行联想的返回结果。

完成联想记忆的关键在于恰当的学习算法得到网络的权值。常见的学习算法有外积法(Outer Product Method),投影学习法(Production Learning Method),伪逆法(Pseudo Inverse Method)和特征结构法(Eigen Structure Method)。

2.代码


%% 清空环境变量
clc
clear
%% 数据导入
load data1 array_one
load data2 array_two
%% 训练样本(目标向量)
 T=[array_one;array_two]';
%% 创建网络
 net=newhop(T);
%% 数字1和2的带噪声数字点阵(固定法)
load data1_noisy noisy_array_one
load data2_noisy noisy_array_two
%% 数字1和2的带噪声数字点阵(随机法)

%% 数字识别

noisy_one={(noisy_array_one)'};
identify_one=sim(net,{10,10},{},noisy_one);
identify_one{10}';
noisy_two={(noisy_array_two)'};
identify_two=sim(net,{10,10},{},noisy_two);
identify_two{10}';
%% 结果显示
Array_one=imresize(array_one,20);
subplot(3,2,1)
imshow(Array_one)
title('标准(数字1)') 
Array_two=imresize(array_two,20);
subplot(3,2,2)
imshow(Array_two)
title('标准(数字2)') 
subplot(3,2,3)
Noisy_array_one=imresize(noisy_array_one,20);
imshow(Noisy_array_one)
title('噪声(数字1)') 
subplot(3,2,4)
Noisy_array_two=imresize(noisy_array_two,20);
imshow(Noisy_array_two)
title('噪声(数字2)')
subplot(3,2,5)
imshow(imresize(identify_one{10}',20))
title('识别(数字1)')
subplot(3,2,6)
imshow(imresize(identify_two{10}',20))
title('识别(数字2)')

 

3.运行结果

5298417407f340ccb142d39569ebee06.png

 

 

这篇关于28离散Hopfield神经网络的联想记忆数字识别(附matlab)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727975

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

hdu 4517 floyd+记忆化搜索

题意: 有n(100)个景点,m(1000)条路,时间限制为t(300),起点s,终点e。 访问每个景点需要时间cost_i,每个景点的访问价值为value_i。 点与点之间行走需要花费的时间为g[ i ] [ j ] 。注意点间可能有多条边。 走到一个点时可以选择访问或者不访问,并且当前点的访问价值应该严格大于前一个访问的点。 现在求,从起点出发,到达终点,在时间限制内,能得到的最大

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ