⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpns.m

📁 神经网络中的对象传播神经网络CPN的学习算法
💻 M
字号:
% clear;clc;
% I=[0 0;0.5 0.5;0 0.5;1 3;0.5 1;1 0.5];
% O=[1 0 0 0 0;1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;0 0 0 1 0;0 0 0 0 1];
% B=0.01;
function [w,v]=cpns(I,O,B)
[M,N]=size(I);
[P,Q]=size(O);
In_Num=N;
Out_Num=Q;
com_Num=Out_Num+1000;
w=rands(com_Num,In_Num)/2+0.5;
v=rands(Out_Num,com_Num)/2+0.5;
Out=rands(P,Q)/2+0.5;   %实际输出
Ber=1;  %误码率
alfa=0.85;  %学习率
%归一化输入向量I
for i=1:M
    t=norm(I(i,:));
    if t~=0
        I(i,:)=I(i,:)/t;
    end
end
%开始训练
while Ber>B
    for j=1:M
        %归一化正向权值
        for i=1:com_Num
            w(i,:)=w(i,:)/norm(w(i,:));
            s(i)=I(j,:)*w(i,:)';
        end
        %求获胜神经元
        temp=max(s);
        for i=1:com_Num
            if temp==s(i)
                count=i;
            end
        end
        %将所有竞争层神经元的输入置0
        for i=1:18
            s(i)=0;
        end
        %将获胜神经元的输出置1
        s(count)=1;
        %权值调整
        w(count,:)=w(count,:)+alfa*(I(j,:)-w(count,:));
        w(count,:)=w(count,:)/norm(w(count,:));
        v(:,count)=v(:,count)+alfa*(O(j,:)'-Out(j,:)');
        %计算网络的输出
        Out(j,:)=v(:,count)';
    end
    Ber=sum(sum(abs(Out-O)));
    alfa=alfa*exp(-0.0025);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -