
gnn
文章平均质量分 73
只是有点小怂
本职工作是电子工程师,其他都是业余爱好
展开
-
【PYG】GNN和全连接层(FC)分别在不同的类中,使用反向传播联合训练,实现端到端的训练过程
return out。原创 2024-07-07 10:32:56 · 801 阅读 · 0 评论 -
【TORCH】绘制权重分布直方图,权重torch.fmod对torch.normal生成的随机数进行取模运算
要绘制上述代码中权重初始化的分布,可以分别展示每一层初始化权重的直方图。我们将用torch.fmod对生成的随机数进行取模运算,确保权重值在 -2 到 2 之间。原创 2024-07-06 20:41:22 · 326 阅读 · 0 评论 -
【TORCH】torch.normal()中的size参数
在函数中,size参数用于指定生成张量的形状。函数用于从正态(高斯)分布中生成随机数。stdsize以下是一些示例,展示了如何使用size。原创 2024-07-06 20:34:55 · 738 阅读 · 0 评论 -
【PYG】端到端训练,GNN中提取节点特征然后通过全连接层(FC)
直接在GNN中提取节点特征然后通过FC进行预测的效果通常更好,因为它能够实现端到端训练,联合优化特征提取和分类,避免特征过拟合,更好地利用图结构信息,并简化模型复杂度和计算开销。这些优势使得直接在GNN中进行特征提取和分类的模型通常具有更好的性能和更高的稳定性。原创 2024-07-06 20:22:50 · 582 阅读 · 0 评论 -
【TORCH】结合图形理解初始化标准差(init_sd_first, init_sd_middle, init_sd_last)
理解权重初始化的标准差()对神经网络训练的影响,可以通过可视化图形来帮助我们更直观地理解。原创 2024-07-06 16:51:35 · 453 阅读 · 0 评论 -
【TORCH】神经网络权重初始化和loss为inf
在 PyTorch 中,有多种常见的权重初始化方法,可以根据具体情况选择最适合的方法。在 PyTorch 中,如果不显式设置权重初始化,模型层会使用默认的初始化方法。输入数据的范围和分布会影响神经网络的训练过程,因此权重初始化需要与之配合,以确保模型能够有效地学习和收敛。通过合理选择权重初始化方法和对输入数据进行适当的预处理,可以确保模型更稳定和高效地训练。通过这些方法,您可以灵活地初始化神经网络的权重,从而提高模型的训练效果和收敛速度。通过这些方法,您可以确保模型的权重初始化适当,并避免损失为。原创 2024-07-06 16:29:35 · 1033 阅读 · 0 评论 -
【PyTorch】torch.fmod使用截断正态分布truncated normal distribution初始化神经网络的权重
这个代码片段展示了如何用 PyTorch 初始化神经网络的权重,具体使用的是截断正态分布(truncated normal distribution)。截断正态分布意味着生成的值会在一定范围内截断,以防止出现极端值。这里使用torch.fmod作为一种变通方法实现这一效果。原创 2024-07-06 15:52:02 · 973 阅读 · 0 评论 -
【TORCH】查看dataloader里的数据,通过dataloader.dataset或enumerate
生成一些示例数据x_data = torch.randn(100, 10) # 100 个样本,每个样本有 10 个特征y_data = torch.randn(100, 1) # 100 个样本,每个样本有 1 个标签# 创建 TensorDataset 和 DataLoader# 直接查看 train_loader 中的数据集len。原创 2024-07-06 14:11:57 · 5617 阅读 · 3 评论 -
【PYG】将节点特征压缩为1和节点压缩为1的例子
将节点压缩为1通常是指将整个图的所有节点通过某种方式合并,得到一个整体的图表示(图嵌入)。在图神经网络(GNN)中,“将特征压缩为1”和“将节点压缩为1”是两个不同的概念,通常对应于不同的任务和操作。假设我们有一个节点特征矩阵,每个节点有多个特征,我们希望将每个节点的特征压缩为一个标量。总之,“将特征压缩为1”是在节点级别上的特征处理,而“将节点压缩为1”是在图级别上的节点合并,两者的操作对象和应用场景不同。假设我们有一个图的节点特征矩阵,我们希望将整个图的所有节点特征合并为一个图表示。原创 2024-07-03 16:21:42 · 1058 阅读 · 0 评论 -
【PYG】节点特征合并和节点特征提取
在图神经网络(Graph Neural Networks, GNN)中,节点特征合并与节点特征提取是两个关键步骤。原创 2024-07-03 16:14:54 · 844 阅读 · 0 评论 -
Pytorch中方法对象和属性,例如size()和shape
方法对象:与类或对象相关联的函数。引用时不执行,需调用(加括号)才能执行。属性:与类或对象相关联的数据。直接访问,通常不需要调用。通过理解这些概念,可以更好地掌握面向对象编程以及如何在框架中使用方法和属性。对象提供了丰富的方法和属性,方便用户进行各种张量操作和查询。了解这些方法和属性的用法,有助于更有效地使用 PyTorch 进行深度学习和张量计算。原创 2024-07-03 10:41:45 · 1438 阅读 · 0 评论 -
【PYG】torch.Size传入不存在的维度报错Dimension out of range
torch.Size对象是一个表示张量形状的元组。可以使用size()方法或shape属性获取张量的形状。方法用于获取特定维度的大小。访问不存在的维度会导致IndexError错误。转载 2024-07-02 23:20:27 · 24 阅读 · 0 评论 -
【PYG】pytorch中size和shape有什么不同
size提供了方法和属性,方法可以接受参数来获取特定维度的大小。shape仅作为属性,返回整个张量的维度信息,不能接受参数。tensor.size返回<built-in method size of Tensor object at 0x7fee569194a0>tensor.shape返回<class ‘torch.Size’>,tensor.size()返回<class ‘torch.Size’>返回一个方法对象引用。返回一个torch.Size对象,表示张量的形状。返回特定维度的大小。原创 2024-07-02 23:17:18 · 1959 阅读 · 0 评论 -
【PYG】 PyTorch中size方法和属性
属性,返回维度信息作为torch.Size对象。:方法,返回维度信息作为torch.Size对象(与属性相同)。:方法,返回指定维度的大小。原创 2024-07-02 23:11:15 · 1483 阅读 · 0 评论 -
【PYG】Planetoid()加载数据集中的预定义的属性和数据归一化
通过在加载数据集时应用变换,你可以确保每个节点的特征向量被归一化,从而提高模型的训练效果和收敛速度。这在处理图神经网络任务时是一个很常见且有用的预处理步骤。原创 2024-07-02 21:27:47 · 1346 阅读 · 0 评论 -
【PYG】Cora数据集分类任务计算损失,cross_entropy为什么不能直接替换成mse_loss
将cross_entropy直接替换成mse_loss报错RuntimeError: The size of tensor a (7) must match the size of tensor b (140) at non-singleton dimension 1将换成mse_loss会报错的原因是,这两个损失函数的输入和输出形状要求不同。是一个分类损失函数,它期望输入是未归一化的logits(形状为),而标签是整数类别(形状为mse_loss是一个回归损失函数,它期望输入和标签的形状相同。原创 2024-07-02 21:19:34 · 833 阅读 · 0 评论 -
【PYG】数学上分析log_softmax+nll_loss=cross_entropy
将模型输出转换为对数概率。nll_loss选择目标类别的对数概率,并取负值,得到损失值。因此,通过和nll_loss的组合,模型输出的三个数被转换为一个单一的损失值,用于优化模型。原创 2024-07-02 15:53:12 · 910 阅读 · 0 评论 -
【PYG】Cora数据集分析argmax(dim=1)输出
out[data.train_mask] 的形状为 [140, 7],因为 data.train_mask 选择了 140 个节点进行训练,每个节点对应 7 个类别的未归一化分数。out[0]与out[0:1,:],同样是取出一行,out[0]得到的是一维向量torch.Size([7]),out[0:1,:]得到的是二维向量torch.Size([1, 7]),二维向量就可以在这一行使用argmax(dim=1)返回最大数的索引。例如,[2708,7]表明有2708个节点,7个类别。原创 2024-07-02 14:42:03 · 1063 阅读 · 0 评论 -
【PYG】out[data.train_mask]用布尔索引来选择特定元素
不是数组套数组的赋值方式,而是利用布尔索引来选择特定元素的操作。这种操作在张量(tensor)和数组处理库(如 NumPy 和 PyTorch)中很常见,用于提取符合特定条件的元素。原创 2024-07-02 10:32:53 · 427 阅读 · 0 评论 -
【PYG】Planetoid如何通过掩码(mask)分割数据集,如何计算数据集大小
在使用PyTorch Geometric加载Cora数据集时,训练、验证和测试集的大小可以通过掩码(mask)来确定。每个掩码是一个布尔张量,用于指示哪些节点属于训练集、验证集和测试集。通过计算这些掩码中为True的元素数量,我们可以确定每个数据集的大小。原创 2024-07-02 10:07:24 · 358 阅读 · 0 评论 -
【PYG】处理Cora数据集分类任务使用的几个函数log_softmax,nll_loss和argmax
log-softmax 操作的主要作用是在多分类问题中计算模型的输出概率分布,并且在使用负对数似然损失(negative log-likelihood loss,通常用于分类任务)时特别有用。对于分类任务,这一步是必要的,因为模型的输出通常是每个类别的对数概率分布,我们需要从中选出概率最大的类别作为预测结果。这表示模型预测第一个样本的类别为1,第二个样本的类别为2,第三个样本的类别为1。通过这种方式,我们可以从模型的输出中提取每个样本的预测类别,用于后续的评估或其他处理。对于二维张量(例如批处理的数据),原创 2024-07-02 10:04:01 · 1064 阅读 · 0 评论 -
【PYG】 Cora 数据集中文献7个标签
在 Cora 数据集中,2708 个节点对应于科学文献,每个节点代表一篇文献。文献被划分为7个类别或标签,分别表示不同的研究领域。这些标签是预先定义好的类别,用来标识每篇文献的主题。尽管节点数量有2708个,但每个节点都被分配到这7个类别之一。这个标签的分配过程通常是由领域专家根据文献的主题进行的。模型在训练时使用这些标签来学习文献之间的关系和特征分布。转载 2024-07-02 09:29:48 · 114 阅读 · 0 评论 -
【PYG】Planetoid加载Cora数据集的data对象属性
在使用PyTorch Geometric加载Cora数据集时,data对象通常是一个包含图数据的字典或类实例。如果你看到,这通常表示data对象包含6个主要属性或字段。对于Cora数据集,dataxedge_index[2, 5429]y[2708]转载 2024-07-02 09:27:56 · 136 阅读 · 0 评论 -
【PYG】简单验证GCN结合Cora数据集
Cora 数据集由 2708 篇科学出版物组成,这些出版物被分为 7 个类别。节点代表论文,边代表引用关系。每个节点有一个 1433 维的特征向量,表示论文的词袋模型(Bag of Words),特征向量中的每个维度表示某个词汇是否出现在论文中。原创 2024-07-02 09:24:33 · 1455 阅读 · 0 评论 -
【PYG】切片语法[:,]
:, :]:选择整个二维数组或张量。[:, :10]:选择二维数组或张量的前 10 列。这种语法在处理多维数据时非常方便,可以用于选择特定的子数组或子张量。原创 2024-07-01 21:50:15 · 242 阅读 · 0 评论 -
【PYG】Planetoid中边存储的格式,为什么打印前十条边用edge_index[:, :10]
edge_index是 PyTorch Geometric 中常用的表示图边的张量。它通常是一个形状为的二维张量,其中num_edges表示图中边的数量。每一列表示一条边,包含两个节点的索引。表示取出edge_index张量的前 10 列,即前 10 条边的节点索引。在 Python 中,使用切片语法 [:,] 是一种方便的方式来选择多维数组或张量的特定部分(另外一部分Python语法知识)程序输出结果。原创 2024-07-01 21:34:52 · 513 阅读 · 0 评论 -
【PYG】简单分析Planetoid()中存储Cora数据集边的数量
Cora 数据集原本有 5429 条无向边,在 PyTorch Geometric 中被存储为 10556 条有向边(每条无向边变成了两条有向边)。这就是为什么在加载数据集时,显示的是 10556 而不是 5429。原创 2024-07-01 21:20:54 · 1249 阅读 · 0 评论 -
【PYG】简单分析 Cora 数据集的文件 cora.cites 和 cora.content
进一步处理和分析接下来,你可以使用加载和解析的数据进行进一步的处理和分析,例如构建图结构、训练机器学习模型或进行数据可视化等操作。如果你打算使用 PyTorch Geometric,可以根据需要将数据转换为 PyTorch 张量或直接使用 PyTorch Geometric 提供的工具类加载数据。通过这些步骤,你可以有效地加载和处理手动下载的 Cora 数据集文件,并在需要时将其集成到机器学习或图神经网络任务中。原创 2024-07-01 17:14:00 · 1174 阅读 · 0 评论 -
【PYG】使用 Planetoid 类和手动下载Cora数据集
手动下载数据集和使用 PyTorch Geometric 中的Planetoid。原创 2024-07-01 16:52:06 · 2422 阅读 · 0 评论 -
【PYG】Cora数据集简介
通过Planetoid类加载 Cora 数据集,并对特征进行归一化,可以快速方便地准备数据,进行节点分类等任务。PyTorch Geometric 提供的工具使得处理图结构数据变得简单和高效,有助于我们在实际应用中充分利用图神经网络的强大能力。原创 2024-07-01 14:48:20 · 2341 阅读 · 0 评论 -
【PYG】pyg里dataloader和torch中dataloader有什么不一样
和是两个不同的加载器,它们分别用于处理不同类型的数据。是 PyTorch 中的通用数据加载器,用于加载任何遵循接口的数据集。它主要用于加载图像、文本和其他常见的数据类型。Datasettransformcollate_fn是 PyTorch Geometric (PyG) 提供的数据加载器,专门用于加载图数据。它与类似,但具有一些针对图数据的特性和优化。原创 2024-06-30 19:16:10 · 1238 阅读 · 0 评论 -
【PYG】定义数据集TypeError: Can‘t instantiate abstract class MyDataset with abstract methods get, len
_len__这个错误表明你的MyDataset类没有正确地实现抽象类Dataset中定义的必需方法。在 PyTorch 中,是一个抽象基类(abstract base class),要求自定义的数据集类(如MyDataset__len__和。这些方法分别用于确定数据集的长度和获取数据集中的一个样本。让我们来修正MyDataset。原创 2024-06-30 17:46:59 · 617 阅读 · 0 评论 -
【PYG】定义数据集报错AttributeError: can‘t set attribute
当你遇到错误时,通常是因为你试图在一个类的实例上设置一个属性,但该类不允许直接设置属性。在Python中,某些类,特别是那些继承自某些基类(比如)的类,限制了直接属性赋值的操作,这是为了安全或一致性考虑。要解决这个问题,你应该在你的MyDataset类的__init__方法中正确地初始化属性。原创 2024-06-30 17:38:30 · 2478 阅读 · 0 评论 -
【PYG】定义数据集继承torch.utils.data import Dataset
from torch_geometric.loader import DenseDataLoader # 更新导入路径# 创建环形图的邻接矩阵# 创建随机特征和标签y = torch.randn((self.num_nodes, 1)) # 每个节点一个标签# 创建数据集num_samples = 100 # 样本数num_nodes = 10 # 每个图中的节点数num_node_features = 8 # 每个节点的特征数# 使用 DenseDataLoader 加载数据。原创 2024-06-30 17:27:04 · 215 阅读 · 0 评论 -
【PYG】from torch_geometric.data import Data的作用
官方文档在 PyTorch Geometric 中,是一个用于表示图数据的核心数据结构之一。原创 2024-06-30 17:13:46 · 823 阅读 · 0 评论 -
【PYG】使用datalist定义数据集,创建一个包含多个Data对象的列表并使用DataLoader来加载这些数据
生成数据:我们生成了包含节点特征、边索引和标签的样本数据。封装数据:我们使用Data对象将每个样本的数据封装起来。原创 2024-06-30 17:00:07 · 414 阅读 · 0 评论 -
【PYG】定义数据集并使用DenseDataLoader进行加载
MyDataset。原创 2024-06-30 16:19:48 · 350 阅读 · 0 评论 -
【PYG】dataloader和densedataloader
创建环形图的邻接矩阵# 创建随机特征和标签y = torch.randn((self.num_nodes, 1)) # 每个节点一个标签# 创建环形图的邻接矩阵# 创建随机特征和标签y = torch.randn((self.num_nodes, 1)) # 每个节点一个标签# 参数设置num_samples = 100 # 样本数num_nodes = 10 # 每个图中的节点数num_node_features = 8 # 每个节点的特征数# 创建数据集。原创 2024-06-30 16:02:06 · 631 阅读 · 0 评论 -
【PYG】 for key in data_list[0].keys: AttributeError: ‘tuple‘ object has no attribute ‘keys‘
from torch_geometric.loader import DenseDataLoader # 更新导入路径# 创建环形图的邻接矩阵# 创建随机特征和标签y = torch.randn((self.num_nodes, 1)) # 每个节点一个标签# 创建数据集num_samples = 100 # 样本数num_nodes = 10 # 每个图中的节点数num_node_features = 8 # 每个节点的特征数# 使用 DenseDataLoader 加载数据。原创 2024-06-30 15:37:49 · 210 阅读 · 0 评论 -
【PYG】使用data_list和dataset创建数据集有什么不同
data_list:适合处理内存中可以完全加载的小型数据集,直接将包含Data对象的列表传递给数据加载器。dataset:适合处理大型数据集或需要动态生成数据项的数据集,通过继承Dataset类并实现__len__和方法,使其与数据加载器兼容。在实际使用中,根据数据集的大小和特性选择合适的存储和加载方式。如果数据集较小且可以完全加载到内存中,使用data_list可能更简单直接。如果数据集较大或需要动态生成,使用dataset则更加灵活高效。原创 2024-06-30 15:23:32 · 376 阅读 · 0 评论