【图像识别】基于反馈神经Hopfield的数字识别matlab源码

一、简介

Hopfield网络是神经网络发展历史上的一个重要的里程碑。由美国加州理工学院物理学家J.J.Hopfield教授于1982年提出,是一种单层反馈神经网络。
1984年,Hopfield设计并研制了网络模型的电路,并成功地解决了旅行商(TSP)计算难题(优化问题)。
Hopfield网络是一种互连型网络,它引入类似于切Lyapunov函数的能量函数概念,在满足条件的情况下,某种“能量函数”的能量在网络运行过程中不断地减少,最后趋于稳定的平衡状态。对于一个非线性动力学系统,系统的状态从某一初值出发经过演变后可能有如下几种结果:渐进稳定点(吸引子)、极限环、混沌、状态发散。
因为人工神经网络的变换函数是一个有界函数,故系统的状态不会发生发散现象。目前,人工神经网络经常利用渐进稳定点来解决某些问题。如果把系统的稳定点视为一个记忆的话,那么从初态朝这个稳定点的演变过程就是一个寻找记忆的过程。如果把系统的稳定点视为一个能量函数的极小点,而把能量函数视为一个优化问题的目标函数,那么从初态朝这个稳定点的演变过程就是一个求解该优化问题的过程。因此,HoPfield神经网络的演变过程是一个计算联想记忆或求解优化问题的过程。实际上,它的解决并不需要真的去计算,而是通过构成反馈神经网络,适当地设计其连接权和输入就可以达到这个目的。
Hopfield神经网络模型是一种循环神经网络,从输出到输入有反馈连接。在输入的激励下,会产生不断的状态变化。对于一个Hopfield网络来说,关键是在于确定它在稳定条件下的权系数。反馈网络有稳定的,也有不稳定的。对于Hopfield网络来说,如何判别其稳定性也是需要确定的。
1 Hopfield数字识别
在这里插入图片描述
2 离散Hopfield网络(DHNN)
在这里插入图片描述
在这里插入图片描述
2 连续Hopfield网络
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、源代码

clc % 清屏
clear all; % 删除workplace变量
close all; % 关掉显示图形窗口
% 标准数字
% one=[-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];
%  
% two=[-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];
 
 three=[-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];
   
    four=[-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];
  
  one=three;
  two=four;
 
% 显示标准数字图像
%数字1
 ONE=imresize(one,20);
 subplot(3,2,1)
 imshow(ONE)
 title('模板图像')
%数字2 
 TWO=imresize(two,20);
 subplot(3,2,2)
 imshow(TWO)
 title('模板图像')
 
% 创建hopfield网络
 T=[one;two]';
 net=newhop(T);
 
%  产生噪声
% 人为噪声
% no1=[-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];
% 
% no2=[-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];

% 随机噪声
rand('state',0);
for i=1:100
    a=rand;
    if a<0.1 % 加入噪声比,一般a较大,识别效果较差
       one(i)=-one(i);
       two(i)=-two(i);
    end
end
no1=one;
no2=two;
 
%  加入噪声后的数字图像
 subplot(3,2,3)
 NO1=imresize(no1,20);
 imshow(NO1)
 title('加入噪声后模板图像')
 
 subplot(3,2,4)
 NO2=imresize(no2,20);
 imshow(NO2)
 title('加入噪声后模板图像')
 

三、运行结果

在这里插入图片描述

四、备注

完整代码或者代写添加QQ1575304183

往期回顾>>>>>>

【图像识别】国外车牌识别

【图像识别】基于cnn卷积神经网络之验证码识别matlab源码

【图像识别】基于svm植物叶子疾病检测和分类

【图像识别】路面裂缝识别含GUI源码

【图像识别】基于RGB和BP神经网络的人民币识别系统含GUI界面

【图像识别】条形码识别系统

【图像识别】基于不变矩的数字验证码识别含GUI界面

【图像识别】基于模板匹配之手写数字识别系统GUI界面

【图像识别】基于贝叶斯分类器之目标识别matlab源码

【图像识别】身份证号码识别matlab源码

【图像识别】条形码识别系统

【图像分类】基于极限学习分类器对遥感图像分类

【图像识别】基于BP神经网络之字母识别matlab源码

【图像特征处理】指纹图像细节特征提取matlab源码

猜你喜欢

转载自blog.csdn.net/qq_34763204/article/details/113720417