Spektral中citation.load_data()方法不存在报错问题咨询
报错原因
该报错由Spektral版本迭代的API不兼容导致:spektral.datasets.citation.load_data是Spektral 1.0版本之前的旧接口,1.0及之后的版本官方重构了数据集模块的整体设计,移除了这个独立的加载函数,将Cora、Citeseer、Pubmed这类引文基准数据集统一封装为Citation数据集类,因此直接调用旧接口会触发属性不存在的错误。
可行替代方案
新版本中加载Cora数据集的标准实现如下,返回的字段和旧接口完全对应:
from spektral.datasets import Citation # 初始化并加载Cora数据集 dataset = Citation("cora") # Cora为单图数据集,直接取索引0即可拿到图结构对象 cora_graph = dataset[0] # 对应旧接口返回的各变量 adj = cora_graph.a # 邻接矩阵,默认为稀疏格式,需要稠密格式可调用 adj.todense() 转换 features = cora_graph.x # 节点特征矩阵 labels = cora_graph.y # 节点one-hot标签 train_mask = dataset.mask_tr # 训练集掩码 val_mask = dataset.mask_va # 验证集掩码 test_mask = dataset.mask_te # 测试集掩码
额外说明
- 如果需要按照GCN等经典模型的要求对邻接矩阵做预处理(加自环、对称归一化),可以在初始化数据集时传入transform参数,无需手动计算:
from spektral.transforms import GCNFilter # 加载时自动完成邻接矩阵归一化 dataset = Citation("cora", transforms=GCNFilter()) - 不建议为了使用旧接口刻意降级Spektral版本,新的类化接口支持更灵活的数据变换、统一的属性访问逻辑,适配所有内置的图神经网络层实现。
内容的提问来源于stack exchange,提问作者playerJX1
相关产品推荐
相关产品推荐

