从github找的zsl项目,迁移python3记录

原代码链接:

https://github.com/JudyYe/zero-shot-gcn/

原代码适用于linux 下的python2,现在需要在windows的python3里跑,需要完成这些工作:

1、源码用到wget工具,windows里有支持的,下载地址:

https://nchc.dl.sourceforge.net/project/gnuwin32/wget/1.11.4-1/wget-1.11.4-1-setup.exe

安装好后,默认路径在C:\Program Files (x86)\GnuWin32\bin底下,在高级设置里把它加到path环境变量里,加好以后spyder需要重启。

使用wget命令下载的文件,如果是https,windows下无法解决(有办法的话麻烦大家告诉我),只好土办法去下载好,并且加上if not os.path.exists的判断,文件存在时不去重复下载。

2、print 要改成函数式的,参数里有int类型的,得用%s格式。这属于老生常谈了。

3、部分用于pickle.dump的file open方法,需要加上'wb'的参数,否则会报仅支持str。

      相应的,pickle.load时,file open方法需要加上'rb'的参数,否则会报无法识别的字符。

4、UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 3136:illegal multibyte sequence

这个问题网上说了很多了,中文windows环境下,打开文件时得加上encoding参数。

with open(txt_file,'r',encoding='utf-8') as fp:

5、python3里filter返回的是迭代器,不是python2里的list,可以直接用list构造器转成list使用。

str_set = list(filter(None, re.split("[ \-_]+", entity_str)))

6、后来在convert_to_gcn_data的时候,又报了:

UnicodeEncodeError: 'utf-8' codec can't encode character '\udcd5' in position 2655: surrogates not allowed

也没说是哪行代码出错,只好到处加了print日志来定位,发现是读取pretrain_weights/resnet_v1_50.ckpt的时候出错了,那么跑去

http://download.tensorflow.org/models/resnet_v1_50_2016_08_28.tar.gz

把模型下载下来,用winrar解压(那个SB快压解不了)到相应目录,搞定,执行完成。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值