Learning to Compare: Relation Network 源码调试

在Windows上运行Learning to Compare: Relation Network源码时遇到各种错误,包括'cp'命令不适用、CUDA设备不匹配、路径键错误、张量类型不匹配等。解决方案涉及修改代码以适应Windows系统、调整数据加载方式和修复张量操作问题。
摘要由CSDN通过智能技术生成

CVPR 2018 的一篇少样本学习论文

Learning to Compare: Relation Network for Few-Shot Learning

源码地址:https://github.com/floodsung/LearningToCompare_FSL

 

在自己的破笔记本上跑了下这个源码,windows 系统,pycharm + Anaconda3 + pytorch-cpu 1.0.1

报了一堆bug, 总结如下:

procs_images.py里 ‘cp’报错

用procs_images.py处理 miniImangenet 数据集的时候:

报错信息:
/LearningToCompare_FSL-master/datas/miniImagenet/proc_images.py
'cp' �����ڲ����ⲿ���Ҳ���ǿ����еij������������ļ���

具体位置是

/datas/miniImagenet/procs_images.py  Line 48:
os.system('cp images/' + image_name + ' ' + cur_dir)

这个‘cp’是linux环境运行的。

用windows系统的话要改成:

os.rename('images/' + image_name, cur_dir + image_name)

除此之外,所有的 os.system('mkdir ' + filename)

也要改成 os.mkdir(filename),虽然不一定会报错。

cpu RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False.

我的torch版本是是cpu, 所以把所有 .cuda(GPU)删了,另外

使用torch.load时添加 ,map_location ='cpu'

 

以miniImagenet_train_few_shots.py 为例
Line 150:
feature_encoder.load_state_dict(torch.load(str("./models/omniglot_feature_encoder_" + str(CLASS_NUM) +"way_" + str(SAMPLE_NUM_PER_CLASS) +"shot.pkl")))
改成
feature_encoder.load_state_dict(torch.load(str("./models/omniglot_feature_encoder_" + str(CLASS_NUM) +"way_
  • 12
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值