୧⍤⃝ ୧⍤⃝ 2023-11-18 18:31 采纳率: 52.5%
浏览 2
已结题

Open Graph Benchmark的数据集能自己做吗(相关搜索:bin文件)

Open Graph Benchmark的数据集能自己做吗?我想把Cora数据集做成官网的数据集,请问有什么好的方式吗?我的代码只能生成.bin文件。

import os
import zipfile
import torch
import dgl
import numpy as np
import scipy.sparse as sp

# 定义设备
#device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
device = torch.device("cpu")

# 加载Cora数据集
'''data = np.genfromtxt("cora.content", dtype=np.dtype(str))
labels = data[:, -1]
features = sp.csr_matrix(data[:, 1:-1], dtype=np.float32)
num_labels = labels.shape[0]'''
# 加载Cora数据集
data = np.genfromtxt("cora.content", dtype=np.dtype(str))
labels = data[:, -1]
label_dict = {label: i for i, label in enumerate(np.unique(labels))}
labels = np.array([label_dict[label] for label in labels])
features = sp.csr_matrix(data[:, 1:-1], dtype=np.float32)
num_labels = labels.shape[0]

# 创建DGL图对象
g = dgl.DGLGraph()
g.add_nodes(num_labels)

# 添加节点特征和标签
if g.num_nodes() == features.shape[0]:
    g.ndata['feat'] = torch.from_numpy(features.toarray()).to(device)
    g.ndata['label'] = torch.from_numpy(labels).to(device)
else:
    print("错误:节点数与特征数不匹配")

# 添加边信息
edge_list = np.genfromtxt("cora.cites", dtype=np.int32)
src = edge_list[:, 0] - 1
dst = edge_list[:, 1] - 1
g.add_edges(src, dst)

# 保存DGL格式数据集
save_path = './data'
if not os.path.exists(save_path):
    os.makedirs(save_path)
dgl.save_graphs(os.path.join(save_path, "cora_dgl.bin"), [g])

# 压缩文件
with zipfile.ZipFile(os.path.join(save_path, "cora_dgl.zip"), 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipf.write(os.path.join(save_path, "cora_dgl.bin"), "cora_dgl.bin")

我想生成他官网数据集里的文件,我该怎么解决呢?

img


或者我该怎么使用这个数据集?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月26日
    • 创建了问题 11月18日