【图神经网络 02】图卷积

这篇具有很好参考价值的文章主要介绍了【图神经网络 02】图卷积。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 图卷积概念

图卷积获取特征需要:各节点输入特征、网络结构图。

图卷积是半监督任务,不需要全部标签,少量标签也能训练,计算损失时只考虑有标签。

2 图卷积计算方式

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

 针对橙色节点,计算特征:平均其邻居特征(包括自身)后传入神经网络。

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

GCN也可以做多层,每一层输入的还是节点特征。
 

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

G:图
A:邻接矩阵
D:各个节点的度
F:每个节点的特征

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

其实就是邻接矩阵(A)特征矩阵(F)进行乘法操作,表示聚合邻居信息。
 

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

考虑自己:【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能 

这个时候度矩阵也得变。
【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

矩阵scale:相当于对行做了归一化。

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

公式变成:【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能 也可以写成:【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

需要对列也做归一化:【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

 因为归一化了两次,所以需要把其中一个矩阵打半折。
【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

3 图的基本公式

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

图的层数两三层就合适,多了反而差。

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能

4 API Doc

Refer to this document to configure the corresponding environment:http://t.csdn.cn/9vOu3

API document: torch_geometric.datasets — pytorch_geometric documentation

5 GCN yields a low-dimensional embedding vector

import torch
import torch.nn as nn
import torch.nn.functional as F

class GraphConvolutionLayer(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(GraphConvolutionLayer, self).__init__()
        self.linear = nn.Linear(input_dim, output_dim)

    def forward(self, adjacency_matrix, features):
        # adjacency_matrix: 图的邻接矩阵,features: 节点特征矩阵
        # 计算GCN层的输出
        support = torch.matmul(adjacency_matrix, features)
        output = self.linear(support)
        return output

# 创建一个简单的图
# 假设有3个节点,每个节点有2维的特征
num_nodes = 3
input_dim = 2
adjacency_matrix = torch.tensor([[0, 1, 1],
                                 [1, 0, 1],
                                 [1, 1, 0]], dtype=torch.float32)
features = torch.tensor([[1.0, 2.0],
                         [3.0, 4.0],
                         [5.0, 6.0]], dtype=torch.float32)

# 创建一个GCN层
gcn_layer = GraphConvolutionLayer(input_dim, output_dim=1)

# 计算GCN层的输出
output = gcn_layer(adjacency_matrix, features)

print("GCN层的输出:")
print(output)

【图神经网络 02】图卷积,深度学习,神经网络,深度学习,人工智能文章来源地址https://www.toymoban.com/news/detail-707858.html

到了这里,关于【图神经网络 02】图卷积的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包