您现在的位置:首页 >> 机器学习 >> 内容

m基于GNN图神经网络的目标匹配分析matlab仿真

时间:2022/12/23 19:45:20 点击:

  核心提示:05_017_m,包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y52ZmJly

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览





3.算法概述

        GNNs是基于信息扩散机理。一个图被处理为一系列单元,每个相当于图的节点,他们根据图的连通性联结着。这些单元刷新它们的状态并交换信息直到它们达到稳定平衡。之后基于单元的状态,GNN的输出可以在节点层间计算出。扩散机理的限制使得一个独特的稳定平衡总是存在。这种认识机制已被用在蜂窝神经网络及Hopfield神经网络。在这些神经网络模型中,连通性根据预定义的图描述,网络的连接自然属性上是循环周期性的,神经元的状态通过达到一个平衡点来计算。GNNs有别于蜂窝神经网络及Hopfield神经网络在于它们可以用在处理更广泛类型的图,如无向图,并且它们采用更综合的扩散机制。

4.部分源码

Nodes = [40:5:200];

Index = 0;

for nn = 1:length(Nodes)

Nodes(nn)    

tic;

Index = Index + 1;

%初始参数

%学习率

Learn_rate = 0.2;

%惯性

lemda      = 0.01;

%网络结构参数

Num_I      = 40;

Num_Hide   = 120;

Num_O      = 1;

%训练次数

Train_Time = 40;

%初始化神经元输入信号

dw         = cell(1,Num_I);

delta      = [zeros(1,Num_Hide)];

x          = [zeros(1,Num_I)];

Yout       = 0;

du         = 0;

Yout_Delay = zeros(1,Num_I);

l          = zeros(1,Num_I);

%隐藏层神经元的输出

Oh         = zeros(Num_Hide,1);

I          = Oh;

Oh_delay   = Oh;

%初始化突触权值参数

Net        = func_initialize(Num_I,Num_Hide,Num_O);

%forward

x          = func_forward(Net,l);

k          = 0;

while(k <= Train_Time | k <= Nodes(nn))

    k = k + 1;

    %模拟训练数据和训练目标

    P(k)    = 1;

    Yout(k) = (0.5*Yout_Delay(1)+P(k))/(1 + Yout_Delay(1)^2);

    [Yout_Est(k),I,Oh] = func_backward(x,Net,Oh_delay,Num_Hide);

    Err(k)             = Yout(k) - Yout_Est(k);

    %Jacobian

    Jacobian_out(k)    = func_Jacobian(Net,delta,Num_Hide);

    %更新网络系数w

    [Net,dw,delta]     = func_w_update(x,I,Net,dw,Err(k),Learn_rate,lemda,Oh,Oh_delay,Num_I,Num_Hide);

    %FORWARD

    l                  = [Err(k),Yout(k),Yout_Delay(1:end-2)];

    x                  = func_forward(Net,l);

    %Delay;

    Yout_Delay(1) = Yout(k);

    for idx = 2:Num_I

        Yout_Delay(idx)=Yout_Delay(idx-1);

    end

    Net.wd2{1} = Net.wd1{1};

    Net.wd1{1} = Net.w{1};

    Net.wd2{3} = Net.wd1{3};

    Net.wd1{3} = Net.w{3};    

    Net.wd2{2} = Net.wd1{2};

    Net.wd1{2} = Net.w{2};   

end

toc;

time(Index) = toc;

end

05_017_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168