Hopfield神经网络入门学习与matlab仿真

来源:互联网 发布:安装360软件管家 编辑:程序博客网 时间:2024/05/21 09:38

Hopfield神经网络设计与应用的关键是对其动力学特性的正确理解:网络的稳定性是其重要性质,而能量函数是判定网络稳定性的基本概念。

本文通过例子解释了Hopfield计算的详细过程,能让初学者对网络的计算过程有更深入的了解。

基础知识可参考百度文库的这个ppt。http://wenku.baidu.com/view/735f472a647d27284b7351dd.html,本例子就是ppt里第一个例子。

先上matlab代码

clear;
clc;
n=0;
E=0;
w=[0 1 2;      %coffin
      1 0 -3;
      2 -3 0];
t=[-5   0   3];     %threshold
p=[0    1   1];     %input
v=p;                %output
for i=1:2           %number of circle
    for j=1:3       %asynchronous calculate,in the order i to n instead of random order
        o=sum(v*w(:,j))-t(j);
        v(j)=satlins(o);
        v
        n=n+1
        E=hopenergy(w,v,t)
   end
end

可以看出仿真是用的串行工作方式,按书上讲是每一次随机抽取一个输入来计算相应的输出,而我这里是按顺序取的,也就是i变量的作用。

然后根据计算输出V,并在控制台显示。

function E=hopenergy(w1,v1,t1)
    E=0;
    w=w1;
    v=v1;
    t=t1;
    [m,n]=size(w);
    for i=1:m
        for j=1:n
            if j~=i
                E=E-0.5*(w(i,j)*v(i)*v(j));
            end
        end
        E=E+t(i)*v(i);
    end
end

这是计算能量的子函数,就是按公式来的。
 可以通过改变系数与输入变量来仿真ppt后面4输入的例子来比较学习。
程序比较简单,主要是帮助理解Hopfield网络的计算过程,以此为记。
原创粉丝点击