GAT学习:PyG实现GAT(自定义GAT层)网络(四)

PyG实现自定义GAT层


本系列中的第三篇介绍了如何调用pyg封装好的GAT函数,当然同样的,我们需要学会如何自定义网络层以满足研究需求。

完整代码

import torch
import math
from torch_geometric.nn import MessagePassing
from torch_geometric.utils import add_self_loops,remove_self_loops,softmax
from torch_geometric.datasets import Planetoid
import ssl
import torch.nn.functional as F

class GATConv(MessagePassing):
    def __init__(self, in_channels,out_channels, heads: int = 1, concat: bool = True,
                 negative_slope: float = 0.2, dropout: float = 0.,
                 add_self_loops: bool = True, bias: bool = True, **kwargs):
        kwargs.setdefault('aggr', 'add')
        super(GATConv, self).__init__(node_dim=0, **kwargs)
		#in_channel&out channel就是我们的输入输出数
        self.in_channels = in_channels
        self.out_channels = out_channels
        #head即设置几个attention头
        self.heads = heads
        #concat用于设置是否拼接attention的输出
        self.concat = concat
        #negative_slope设置leaklyRelu的参数
        self.negative_slope = negative_slope
        self.dropout = dropout
        #add_self_loops设置是否添加自环
        self.add_self_loops = add_self_loops
		#这里将特征映射到每个attention头所需要的特征数,从而满足每个attention头的输入
       	self.lin = Linear(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值