图神经网络GNN/GCN

基本概念

图的基本组成:点、边、图

核心:整合特征,去整合点、边、图的特征,最终进行回归或分类预测。

图的邻接矩阵:描述了每个点的邻居有哪些,有无关系用0、1表示,邻接矩阵是对称的。

实际情况下不是N*N的,大多数是2*N(source,target)

GNN主要任务:

why-图像和文本任务不用GNN?-因为图像和文本的数据格式都是固定的,传统的神经网络输入格式必须是固定的。

图神经网络:针对格式不固定的内容进行处理,比如分子结构、人际关系等。

图级别:基于图进行预测

点和边级别:

特征整合:

点特征的更新,不仅需要考虑自己,还需要考虑邻居

多次GNN的作用:

  • GNN的本质是更新各部分的特征
  • 输入是特征,输出是特征,邻接矩阵不改变

输出特征的作用:

  • 各点的特征组合,可以对图进行分类
  • 各边的特征组合,可以对图进行分类
  • 各节点也可以分类

图卷积和卷积的差异:

  • 用在GNN当中
  • 输入给GCN的东西:每个点的特征、邻接矩阵
  • GCN是半监督学习,不需要全部标签

图卷积的基本思想:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!以下是一个简单的示例代码,展示了如何使用PyTorch Geometric库实现一个神经网络(Graph Neural Network,GNN)模型: ```python import torch import torch.nn as nn import torch.nn.functional as F from torch_geometric.datasets import Planetoid from torch_geometric.nn import GCNConv # 加载数据集 dataset = Planetoid(root='data/Cora', name='Cora') data = dataset[0] class GNNModel(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(GNNModel, self).__init__() self.conv1 = GCNConv(input_dim, hidden_dim) self.conv2 = GCNConv(hidden_dim, output_dim) def forward(self, x, edge_index): x = F.relu(self.conv1(x, edge_index)) x = self.conv2(x, edge_index) return F.log_softmax(x, dim=1) # 配置模型和优化器 input_dim = dataset.num_features hidden_dim = 16 output_dim = dataset.num_classes model = GNNModel(input_dim, hidden_dim, output_dim) optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4) # 训练模型 model.train() for epoch in range(200): optimizer.zero_grad() out = model(data.x, data.edge_index) loss = F.nll_loss(out[data.train_mask], data.y[data.train_mask]) loss.backward() optimizer.step() # 测试模型 model.eval() _, pred = model(data.x, data.edge_index).max(dim=1) correct = int(pred[data.test_mask].eq(data.y[data.test_mask]).sum().item()) acc = correct / int(data.test_mask.sum()) print(f'Test Accuracy: {acc:.4f}') ``` 上述代码使用了PyTorch Geometric库来加载Cora数据集,并根据GCN(Graph Convolutional Network)模型的架构实现了GNN模型。模型的前向传播通过两个GCNConv层实现,使用ReLU作为激活函数,并使用log_softmax输出。然后使用Adam优化器进行训练,并使用负对数似然损失进行监督学习。最后,将模型切换到评估模式,计算测试集上的准确率。 请注意,这只是一个简单的示例,实际应用中可能需要根据需求进行调整和优化。你可以根据自己的数据集和任务来修改和扩展这个代码。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值