• 霍普菲尔得神经网络(Hopfield Neural Network)


     

    设计一个反馈网络存储下列目标平衡点:

    T = [ 1  -1; -1  1 ];

    并用6组任意随机初始列矢量,包括一组在目标平衡点连线的垂直平分线上的一点作为输入矢量对所设计的网络的平衡点进行测试,观察3次循环的每一次的输出结果。给出最后收敛到各自平衡点(或不稳定的平衡点)结果的次数。

    采用正交化方法设计的霍普菲尔德网络结构,如下图:

    通过net=newhop(T);操作可得网络的权值和偏差为:

    可见权值是对称的。

    现在选取6组任意随机初始列矢量,并调整其中一组在目标平衡点连线的垂直平分线上,如下:

    循环迭代60次效果如下图所示:

    其中(0.5000,0.5000)点60次迭代收敛至不稳定平衡点(0,0),当迭代次数增大至1000时能改变这种情况。

    最终收敛情况如下:


    T=[1 -1;-1 1];
    P=[ 0.8147    -0.1270    0.6324    0.5000    -0.9575    0.1576;
        0.9058    0.9134    -0.0975    0.5000    0.9649    -0.9706];
    net=newhop(T);
    W=net.lw{1,1}
    b=net.b{1}
    plot(T(1,:),T(2,:),'r*');
    axis([-1 1 -1 1])
    
     max_epoes =1000;
    [Y,Pf,Af] = sim(net,{6,max_epoes},[],P);    
    
    plot(T(1,:),T(2,:),'*y');
    hold on
    plot(P(1,:),P(2,:),'+');
    hold on
    A=zeros(2,max_epoes+1);
    for i=1:6
    for n=2:(max_epoes+1)
        A(1,n)=Y{n-1}(1,i);
        A(2,n)=Y{n-1}(2,i);
        hold on
    end
    A(1,1)=P(1,i);
    A(2,1)=P(2,i);
    title('Hopfield Network State Space')
    plot(A(1,:),A(2,:),'*-')
    end
    % for i=1:30
    %    A=sim(net,P);
    %    P=A;
    % end
    % [a(1,i),aa(1,i)]
    % hold on
    % plot(aa(1,1),aa(2,1),'wx',aa(1,:),aa(2,:))
    % Y_fanal=zeros(60,6);
    % for i=1:30
    % [Y,Pf,Af] =net(6,[],P)
    % Y_fanal(i,:)=Y(1,:);
    % Y_fanal(i+1,:)=Y(2,:);
    % end
    % for i=1:6
    %    for j=1:2:30
    %    plot(Y_fanal(j,i),Y_fanal(j+1,i),'o-');
    %    hold on
    %    end
    % end
    View Code

     

  • 相关阅读:
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    栈和队列
    第六次作业
    第五次作业
    第四次作业
    第三次作业
    java任务
    第三周-自主学习任务-面向对象基础与类的识别
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/9939972.html
Copyright © 2020-2023  润新知