无法运行Facebook Research的Poincare Embeddings示例获取层级表示
解决Poincaré Embeddings example.sh脚本运行中断问题
我之前复现这个项目的时候也踩过类似的坑,结合你的环境配置和截断的错误日志来看,咱们可以从这几个方向一步步排查解决:
1. 先获取完整的错误日志
你给出的日志截断在Burnin: lr=0.003 'Tr...,根本没法定位具体问题。先重新运行脚本并把所有输出保存到日志文件里:
NHTHREDS=2 ./example.sh > run.log 2>&1
然后打开run.log查看完整内容,重点找ERROR、Traceback这类关键词,这是定位问题的核心。
2. 修复PyTorch版本兼容性问题
这个项目早期版本是基于PyTorch 0.3.1开发的,和0.4.0存在不少API差异,这大概率是你运行失败的主要原因:
- 方案一:降级PyTorch到适配版本
在你的conda环境里执行:conda install pytorch=0.3.1 torchvision -c pytorch - 方案二:修改代码适配PyTorch 0.4.0
主要调整两处:- 打开
poincare/nn.py,把所有torch.autograd.Variable()的调用直接替换成对应的张量操作(0.4.0开始张量默认支持自动求导) - 检查
optim.py里的优化器初始化代码,把params参数的传递方式调整为符合0.4.0的要求
- 打开
3. 确认依赖与可执行权限
- 确保conda环境里装全了基础依赖:
conda install numpy scipy - 项目里的
slurp脚本需要可执行权限,执行下面的命令赋予权限:chmod +x slurp
4. 检查数据集路径与完整性
example.sh默认加载data/mammal_subtree.tsv,先确认这个文件存在且完整:
ls -l data/mammal_subtree.tsv
如果文件缺失,重新克隆项目仓库或者从项目的data目录下手动下载这个数据集。
5. 尝试单线程运行
旧版本PyTorch的多线程处理容易出现资源竞争问题,先试试单线程运行看是否正常:
NHTHREDS=1 ./example.sh
如果按照上面的步骤调整后还是有问题,把run.log里的完整错误信息贴出来,咱们再针对性解决。
内容的提问来源于stack exchange,提问作者Harman
相关产品推荐
相关产品推荐

