图神经网络学习gnn-day-2

主要问题为版本环境问题,我的python版本为py3.6,torch-1.7,必须下载对应的版本的离线包,并且安装。
其次是数据集问题,数据集较大,且GitHub要翻墙,所以数据集问题也要解决。
离线whl包如下所示:
问题主要是: 
model = Net().to('cpu')
Data(x=x, edge_index=edge_index, edge_attr=edge_attr, y=y, num_nodes=num_nodes, other_attr=other_attr) 类没有构建

希望在后续学习中逐渐解决。

主要代码如下所示:
import torch
import torch.nn.functional as F
class Data(object):
    def __init__(self, x=None, edge_index=None, edge_attr=None, y=None, **kwargs):
        self.x = x
        self.edge_index = edge_index
        self.edge_attr = edge_attr
        self.y = y
        for key, item in kwargs.items():
            if key == 'num_nodes':
                self.__num_nodes__ = item
            else:
                self[key] = item
from torch_geometric.datasets import KarateClub
dataset = KarateClub()
data = dataset[0] # Get the first graph object.
print(data)
print('================================================ ==============') # 获取图的一些信息 print(f'Number of nodes: {data.num_nodes}') # 节点数量 print(f'Number of edges: {data.num_edges}') # 边数量 12345678910
print(f'Number of node features: {data.num_node_features}') # 节点属性的维度
print(f'Number of node features: {data.num_features}') # 同样是节点属性的维度
print(f'Number of edge features: {data.num_edge_features}') # 边属性的维度
print(f'Average node degree: {data.num_edges / data.num_nodes:.2f}') # 平均节点度
print(f'if edge indices are ordered and do not contain duplicate entries.: {data.is_coalesced()}') # 是否边是有 序的同时不含有重复的边
print(f'Number of training nodes: {data.train_mask.sum()}') # 用作训练集的节点
print(f'Training node label rate: {int(data.train_mask.sum()) / data.num_nodes:.2f}') # 用作训练集的节点的数量
print(f'Contains isolated nodes: {data.contains_isolated_nodes()}') # 此图是否包含孤立的节 点
print(f'Contains self-loops: {data.contains_self_loops()}') # 此图是否包含自环的边
print(f'Is undirected: {data.is_undirected()}') # 此图 是否是无向图
from torch_geometric.datasets import Planetoid
dataset = Planetoid(root='E:\\图神经网络\\codes\\dataset', name='Cora') # Cora()
print(len(dataset),dataset.num_classes,dataset.num_node_features)
data = dataset[0]
print(data.is_undirected())
print(data.train_mask.sum().item())
print(data.val_mask.sum().item())
print(data.test_mask.sum().item())
# model = Net().to('cpu')
# data = dataset[0].to('cpu')
# 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)
#     loss = F.nll_loss(out[data.train_mask], data.y[data.train_mask])
#     loss.backward()
#     optimizer.step()



输出为:
Data(edge_index=[2, 156], train_mask=[34], x=[34, 34], y=[34])
================================================ ==============
Number of node features: 34
Number of node features: 34
Number of edge features: 0
Average node degree: 4.59
if edge indices are ordered and do not contain duplicate entries.: True
Number of training nodes: 4
Training node label rate: 0.12
Contains isolated nodes: False
Contains self-loops: False
Is undirected: True
1 7 1433
True
140
500
1000

总结:

day2总的来说比较简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
嗨!对于神经网络(Graph Neural Networks,简称GNN),我可以给你一些深入浅出的学习建议。GNN是一种基于结构进行学习和推理的神经网络模型,在许多结构数据领域具有广泛的应用。 首先,建议你先了解一些论的基础知识,比如的定义、的表示方法、节点和边的属性等。这将有助于你更好地理解GNN模型的原理和应用。 接下来,你可以学习GNN的基本原理和主要组成部分。GNN主要包括卷积层(Graph Convolutional Layer)和池化层(Graph Pooling Layer)。你可以学习一些经典的GNN模型,如GraphSAGE、GCN(Graph Convolutional Network)和GAT(Graph Attention Network)。这些模型会帮助你建立对GNN的基本理解。 在学习过程中,不要忽视实践环节。尝试使用一些开源的GNN框架(如PyTorch Geometric、DGL等)或编写自己的代码实现一个简单的GNN模型。通过动手实践,你可以更加深入地理解GNN的工作原理,并在实际问题中应用它。 此外,我还建议你关注一些相关的研究论文和领域进展。GNN是一个快速发展的领域,新的模型和技术层出不穷。阅读最新的研究论文,关注会议和期刊上的相关工作,可以帮助你了解最新的研究动态,并从中获取灵感。 最后,记住持续学习和实践是很重要的。神经网络是一个复杂而广泛的主题,需要不断地深入学习和实践才能掌握。希望这些建议能对你学习神经网络GNN有所帮助!如果你有更具体的问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值