运行MoleculeNet加载ESOL数据集报错,root参数含义及排查求助
解决ESOL数据集加载报错问题
先明确root参数的作用
root是数据集的存储根目录,MoleculeNet会自动在这个目录下创建对应数据集的子文件夹(比如ESOL对应esol文件夹),用来存放下载的原始数据、处理后的缓存文件(比如报错里的data.pkl)。你传.就是指当前工作目录,所以它会在当前目录生成esol文件夹。
报错原因及解决步骤
出现PytorchStreamReader failed locating file data.pkl,大概率是之前的缓存文件损坏、下载不完整,或者手动上传的文件和MoleculeNet预期格式不匹配。按以下步骤操作:
清理旧的损坏缓存
先删掉已有的esol文件夹,Colab里用命令行执行:!rm -rf ./esol彻底清除之前下载失败或损坏的文件。
确保依赖库版本兼容
版本不匹配也可能导致数据处理出错,Colab里重新安装适配的依赖:!pip install rdkit-pypi torch-geometric torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.0.0+cu118.html注:上述链接适配PyTorch 2.0+CUDA118,若你的PyTorch版本不同,替换成对应版本的torch_geometric安装链接即可。
重新加载数据集
清理完成后,重新运行加载代码:import rdkit from torch_geometric.datasets import MoleculeNet # Load the ESOL dataset data = MoleculeNet(root=".", name="ESOL") data这次MoleculeNet会重新下载原始数据并自动处理生成缓存文件,不会再出现找不到
data.pkl的问题。不要手动上传CSV文件
MoleculeNet类会自动下载并处理原始数据,你手动上传的CSV格式和它预期的处理后格式不匹配,才会出现类不匹配的问题,完全不需要手动上传,让库自行处理即可。
额外提示
如果还是报错,用!pwd查看Colab当前工作目录,确认root参数指向的路径正确,不过默认用.就没问题,只要清理旧文件夹后重新下载即可。
内容的提问来源于stack exchange,提问作者joe doe
相关产品推荐
相关产品推荐

