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_