当前位置: 首页 > news >正文

图神经网络

现在是下午四点,我今天醒的太晚了,十二点才起床,然后打打炉石看看小说,一晃就到现在了。不过真的蛮有意思的。我得开始学习了,毕竟时间很紧张,我需要尽快达到毕业要求。
补充一下,其实喜欢看网文,一个是想象力,一个是yy,毕竟现实生活中得不到的网文里幻想一下也不错。
之前我在github上找个了简单的神经网络的项目看了看代码,现在我要去找一个图神经网络的项目。
我找了一下,但是我发现与其去找github上面的代码,不如直接问deep seek。

1

import torch
import torch.nn.functional as F
from torch_geometric.datasets import Planetoid
from torch_geometric.nn import GCNConv

# 加载 Cora 数据集
dataset = Planetoid(root='data/Cora', name='Cora')
data = dataset[0]

# 定义 GCN 模型
class GCN(torch.nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim):
        super(GCN, self).__init__()
        self.conv1 = GCNConv(input_dim, hidden_dim)
        self.conv2 = GCNConv(hidden_dim, output_dim)

    def forward(self, x, edge_index):
        # 第一层 GCN
        x = self.conv1(x, edge_index)
        x = F.relu(x)
        x = F.dropout(x, training=self.training)
        # 第二层 GCN
        x = self.conv2(x, edge_index)
        return F.log_softmax(x, dim=1)

# 初始化模型
model = GCN(input_dim=dataset.num_features, hidden_dim=16, output_dim=dataset.num_classes)

# 定义优化器
optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4)

# 训练函数
def train():
    model.train()
    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()
    return loss.item()

# 测试函数
def test():
    model.eval()
    out = model(data.x, data.edge_index)
    pred = out.argmax(dim=1)
    correct = pred[data.test_mask] == data.y[data.test_mask]
    acc = int(correct.sum()) / int(data.test_mask.sum())
    return acc

# 训练和测试
for epoch in range(200):
    loss = train()
    if epoch % 10 == 0:
        acc = test()
        print(f'Epoch {epoch:03d}, Loss: {loss:.4f}, Test Acc: {acc:.4f}')

# 最终测试
acc = test()
print(f'Final Test Accuracy: {acc:.4f}')

2

我先把cora数据集下载到本地,赞美计算机,这个计算量人来干是不可能的。我感觉pycharm什么都能打开,比笔记本强多了。这个编号为35号的论文很强啊,像是后面的1033,103482什么的引用的都是它。
在这里插入图片描述
cora.content第一列很简单,无非就是论文编号嘛,后面的一大批01其实就是这1433个词会不会出现在论文里面,最后面还有一列,代表论文属于哪一类(一共有七个类)
在这里插入图片描述

3 planetoid方法

4

我终于看懂这个初始化模型是什么意思了

# 初始化模型
model = GCN(input_dim=dataset.num_features, hidden_dim=16, output_dim=dataset.num_classes)

其实神经网络的本质就是数学操作,矩阵操作,这个cora的节点特征矩阵就是一个2708行,1433列的二维矩阵,这个num_feature代表的是节点维度特征,这个model就是根据这1433个节点维度特征,这1433个关键词判断出这篇文章到底属于哪一类。所以这个模型就是通过两层图卷积,从1433映射为16再映射为7。

5

我看了这个图神经网络的代码,我就想说这和神经网络有什么区别,都是计算损失,都是反向传播。
我终于理解什么是边索引矩阵了,边索引矩阵要以一列为单位,上边是源点,下边是目标点。
区别在于神经网络是给每一个参数加权重,然后权重*参数,但是图神经网络是对矩阵进行操作
输出的时候也是如此,图神经网络要考虑到相邻的节点。

5

我看代码看的有点烦,我去刷刷申论行测什么的

相关文章:

  • 宝塔Linux面板配置环境 + 创建站点
  • 时间转换(acwing)c/c++/java/python
  • 【代码软件 | vs2019】vs2019+Qt5.12.12开发环境 的下载、安装详细介绍
  • 《解锁AI密码,机器人精准感知环境不再是梦!》
  • Linux 命令大全完整版(04)
  • 嵌入式八股文(五)硬件电路篇
  • 从零实现机器人自主避障
  • [内网基础] 内网基础知识 —— Windows 工作组
  • 在生产环境中部署和管理 PostgreSQL:实战经验与最佳实践
  • java中ArrayList用法
  • 引入elementUI时报错undefined is not an object (evaluating ‘h.a.prototype‘)
  • SQLMesh 系列教程9- 宏变量及内置宏变量
  • 基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】
  • 简单3步部署本地国产大模型DeepSeek大模型并搭建知识库
  • 跨域问题解释及前后端解决方案(SpringBoot)
  • 计算机网络常考大题
  • @Transactional 嵌套,内层抛异常,外层用 try-catch 捕获但实际事务却回滚了
  • 分布式之Raft算法
  • 流浪 ArchLinux 后续: 修复 fstrim USB SSD
  • Day9,Hot100(图论)
  • 高端品牌服装/seo优化服务是什么
  • 黄页88网站关键词怎么做/公众号如何推广
  • 建设网站的个人心得体会/奇零seo赚钱培训
  • 免费微网站系统源码/旅游最新资讯
  • 产品推广的网站怎么做/南宁 百度网盘
  • 北海教网站建设/百度信息流