hopfield网络联想记忆实现方法

[color=green]Hopfield联想记忆实现原理[/color]
[list]
[*]H网的E能量函数,平稳点——谷,这些谷与要记忆的内容对应。
[*]设法把所需记忆的模式设计成某个确定网络状态的一个稳定平衡点。
[*]当网络从与记忆模式较靠近的某个初始状态(即发生某些变形或含有某些噪声的记忆模式)出发后,网络按H网工作运行规则进行状态更新;
[*]最后网络的状态将稳定在能量函数的极小点,即记忆模式所对应的状态。
[*]这样,就完成了由部分信息(含躁声的记忆模式)到全部信息(记忆模式)的联想过程。
[/list]
[color=green]设计方法[/color]
[list=1]
[*]学习模式——决定权重
想要记忆的模式,用-1和1的2值表示模式:-1,-1,1,-1,1,1,...
P:模式的总数
ap(s):第p个模式的第s个要素(-1或1)
wij:第j个神经元与第i个神经元间的权重
任意两个神经元j、i间的权重:
wij=∑ap(i)ap(j),p=1…p;
i = j时,wij=0,即各神经元的输出不直接返回自身。
[*]想起模式
神经元输出值的初始化
想起时,一般是未知的输入。设xi(0)为未知模式的第i个要素(-1或1)
将xi(0)作为相对应的神经元的初始值,其中,0意味t=0。
反复部分:对各神经元,计算:
xi (t+1) = f (∑wijxj(t)-θi),j=1…n, j≠i
n—神经元总数;f()--Sgn(); θi—神经元i发火阈值
反复进行,直到各个神经元的输出不再变化。
[/list]
[color=green]利用H网想起字母“A”[/color]

[img]http://dl.iteye.com/upload/attachment/427436/5e823c76-9300-3cc4-b35b-e661a2561670.png[/img]
[color=green]代码如下[/color]


public class HopfieldMemory {
int patternNumber=1 ;
int column=3;
int row=5;
static int [][] objectArray={{-1,1,-1},{1,-1,1},{1,1,1},{1,-1,1},{1,-1,1}};
static int [][] initArray={{-1,-1,-1},{1,-1,1},{1,-1,1},{1,-1,1},{1,-1,-1}};
int [][] w=new int[15][15];
int [] temp=new int[15];
static int [] temp2=new int [15];
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HopfieldMemory hm=new HopfieldMemory();
hm.init();
for(int i=0;i<100;i++){
hm.calculate();
}
System.out.println("目标状态");
for(int i=0;i<objectArray.length;i++){
for(int j=0;j<objectArray[0].length;j++){
if(objectArray[i][j]!=-1)
System.out.print(" "+objectArray[i][j]+" ");
else
System.out.print(objectArray[i][j]+" ");
}
System.out.println();
}
System.out.println("初始状态");
for(int i=0;i<initArray.length;i++){
for(int j=0;j<initArray[0].length;j++){
if(initArray[i][j]!=-1)
System.out.print(" "+initArray[i][j]+" ");
else
System.out.print(initArray[i][j]+" ");
}
System.out.println();
}
System.out.println("运行后状态");
for(int i=0;i<temp2.length;i++){
if(temp2[i]!=-1)
System.out.print(" "+temp2[i]+" ");
else
System.out.print(temp2[i]+" ");
if(i==2||i==5||i==8||i==11)
System.out.println();
}
}

public void init(){

int count=0;
for(int i=0;i<objectArray.length;i++)
for(int j=0;j<objectArray[0].length;j++){
temp[count++]=objectArray[i][j];
}
int count2=0;
for(int i=0;i<initArray.length;i++)
for(int j=0;j<initArray[0].length;j++){
temp2[count2++]=initArray[i][j];
}
for(int m=0;m<w.length;m++)
for(int n=0;n<m;n++){
w[m][n]=w[n][m]=temp[m]*temp[n];
}

}

public void calculate(){
for(int i=0;i<temp2.length;i++){
for(int j=0;j<temp2.length;j++)
{
temp2[i] +=w[i][j]*temp2[j];
}
if(temp2[i]>=0)
temp2[i]=1;
else
temp2[i]=-1;
}
}

}

结果如下
目标状态
-1 1 -1
1 -1 1
1 1 1
1 -1 1
1 -1 1
初始状态
-1 -1 -1
1 -1 1
1 -1 1
1 -1 1
1 -1 -1
运行后状态
-1 1 -1
1 -1 1
1 1 1
1 -1 1
1 -1 1
[color=red]将结果矩阵中1连起来,就是一个字母A[/color]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matlab常用代码大全,帮助你科研,论文实证分析,数模竞赛 第44章 层次分析法 第45章 灰色关联度 第46章 熵权法 第47章 主成分分析 第48章 主成分回归 第49章 偏最小二乘 第50章 逐步回归分析 第51章 模拟退火 第52章 RBF,GRNN,PNN-神经网络 第53章 竞争神经网络与SOM神经网络 第54章 蚁群算法tsp求解 第55章 灰色预测GM1-1 第56章 模糊综合评价 第57章 交叉验证神经网络 第58章 多项式拟合 plotfit 第59章 非线性拟合 lsqcurefit 第60章 kmeans聚类 第61章 FCM聚类 第62章 arima时间序列 第63章 topsis 第1章 BP神经网络的数据分类——语音特征信号分类 第2章 BP神经网络的非线性系统建模——非线性函数拟合 第3章 遗传算法优化BP神经网络——非线性函数拟合 第4章 神经网络遗传算法函数极值寻优——非线性函数极值寻优 第5章 基于BP_Adaboost的强分类器设计——公司财务预警建模 第6章 PID神经元网络解耦控制算法——多变量系统控制 第7章 RBF网络的回归--非线性函数回归的实现 第8章 GRNN网络的预测----基于广义回归神经网络的货运量预测 第9章 离散Hopfield神经网络联想记忆——数字识别 第10章 离散Hopfield神经网络的分类——高校科研能力评价 第11章 连续Hopfield神经网络的优化——旅行商问题优化计算 第12章 初始SVM分类与回归 第13章 LIBSVM参数实例详解 第14章 基于SVM的数据分类预测——意大利葡萄酒种类识别 第15章 SVM的参数优化——如何更好的提升分类器的性能 第16章 基于SVM的回归预测分析——上证指数开盘指数预测. 第17章 基于SVM的信息粒化时序回归预测——上证指数开盘指数变化趋势和变化空间预测 第18章 基于SVM的图像分割-真彩色图像分割 第19章 基于SVM的手写字体识别 第20章 LIBSVM-FarutoUltimate工具箱及GUI版本介绍与使用 第21章 自组织竞争网络在模式分类中的应用—患者癌症发病预测 第22章 SOM神经网络的数据分类--柴油机故障诊断 第23章 Elman神经网络的数据预测----电力负荷预测模型研究 第24章 概率神经网络的分类预测--基于PNN的变压器故障诊断 第25章 基于MIV的神经网络变量筛选----基于BP神经网络的变量筛选 第26章 LVQ神经网络的分类——乳腺肿瘤诊断 第27章 LVQ神经网络的预测——人脸朝向识别 第28章 决策树分类器的应用研究——乳腺癌诊断 第29章 极限学习机在回归拟合及分类问题中的应用研究——对比实验 第30章 基于随机森林思想的组合分类器设计——乳腺癌诊断 第31章 思维进化算法优化BP神经网络——非线性函数拟合 第32章 小波神经网络的时间序列预测——短时交通流量预测 第33章 模糊神经网络的预测算法——嘉陵江水质评价 第34章 广义神经网络的聚类算法——网络入侵聚类 第35章 粒子群优化算法的寻优算法——非线性函数极值寻优 第36章 遗传算法优化计算——建模自变量降维 第37章 基于灰色神经网络的预测算法研究——订单需求预测 第38章 基于Kohonen网络的聚类算法——网络入侵聚类 第39章 神经网络GUI的实现——基于GUI的神经网络拟合、模式识别、聚类 第40章 动态神经网络时间序列预测研究——基于MATLAB的NARX实现 第41章 定制神经网络实现——神经网络的个性化建模与仿真 第42章 并行运算与神经网络——基于CPU/GPU的并行神经网络运算 第43章 神经网络高效编程技巧——基于MATLAB R2012b新版本特性的探讨

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值