You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调用给定Python代码中的get_data函数并解决config未定义报错

报错原因与修复方案

你遇到的报错是因为初始化Preprocess类时,没有提前定义传入的config对象,同时还有一个隐藏错误:传入的数据集名Cora是字符串类型,需要加引号,否则后续还会触发name 'Cora' is not defined报错。

修复步骤

步骤1:定义config对象

Preprocess初始化要求传入的config必须包含root_dir(数据集存储根路径)和batch_size(批次大小)两个属性,你可以用一个简单的自定义类生成config:

class Config:
    root_dir = './data/'  # 路径末尾必须加斜杠,避免拼接后路径错误
    batch_size = 32  # 可根据自身需求调整批次大小
config = Config()

步骤2:修正实例化调用参数

数据集名称是字符串类型,需要用单/双引号包裹,同时你在初始化Preprocess类时,内部已经自动调用过一次get_data,结果已经存储在实例属性中,无需重复调用。

完整可运行代码

from torch_geometric.datasets import Planetoid
# 高版本PyG的DataLoader已迁移到torch_geometric.loader,旧版本可换回torch_geometric.data
from torch_geometric.loader import DataLoader

# 定义配置类
class Config:
    root_dir = './data/'
    batch_size = 32
config = Config()

class Preprocess():
    def __init__(self, config, d_name):
       self.root_dir = config.root_dir
       self.batch_size = config.batch_size
    
       self.num_classes, self.num_node_features, self.data_loader = self.get_data(d_name)
    
    def get_data(self, d_name):
        '''
        d_name = 'Cora', 'CiteSeer', 'PubMed'
        '''
        dataset = Planetoid(root=self.root_dir + d_name , name=d_name)
        return dataset.num_classes, dataset.num_node_features, DataLoader(dataset, batch_size = self.batch_size)

# 正确实例化
f = Preprocess(config, 'Cora')

# 直接读取已加载的结果
print("类别数:", f.num_classes)
print("节点特征维度:", f.num_node_features)
print("数据加载器:", f.data_loader)

# 如果需要加载其他数据集,再手动调用get_data即可
# cite_num_classes, cite_features, cite_loader = f.get_data('CiteSeer')

注意事项

  • 首次运行会自动下载对应数据集,需要保持网络正常
  • 如果导入DataLoader报错,根据你的PyG版本调整导入路径即可
  • 不要删除root_dir末尾的斜杠,否则会生成错误的存储路径,导致数据集重复下载

内容的提问来源于stack exchange,提问作者muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:18:02