复现《21个项目玩转深度学习》代码时出现错误解决办法

最近在看《21个项目玩转深度学习》这本书,然后想复现一下里面第三章的程序,无奈里面的环境是python 2.x 我的环境是python是3.x。遇到了各种各样的问题,所以把遇到的问题的解决方法都记下来。
复现《21个项目玩转深度学习》代码时出现错误解决办法_第1张图片
运行第data_prepare文件夹下data_convert.py将图片转换为tfrecord格式时出现好多错误:
第一个错误:
File “/usr/lib/python3.5/random.py”, line 272, in shuffle
x[i], x[j] = x[j], x[i]
TypeError: ‘range’ object does not support item assignment
这是python2跟python3版本不同导致的,解决方法很简单:
修改src文件夹下的tfrecord.py文件里内容:
把339行的shuffled_index = range(len(filenames))改为
shuffled_index = list(range(len(filenames)))

改完之后又运行出现第二个错误:
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode bytes in position 0-1: unexpected end of data
解决方法: 删掉不必要的长的注释:第319行和第388行到403行。
改完之后又运行出现第三个错误:.
for i in xrange(len(spacing) - 1):
NameError: name ‘xrange’ is not defined

解决方法:把所有的xrange改为range(好像是2处,第207行,第259行)(python2跟python3版本差异导致的问题)
改完之后又运行出现第四个错误:
TypeError: %d format: a number is required, not range
解决方法:.第160行吧“r”改为“rb”
改完之后又运行出现第五个错误:
TypeError: ‘RGB’ has type str, but expected one of: bytes
解决方法:tfrecord.py第94和96行修改为 colorspace = b’RGB’ image_format = b’JPEG’
tfrecord.py第104行修改为 ‘image/class/text’: _bytes_feature(str.encode(text)),
tfrecord.py第106行修改为 ‘image/filename’:_bytes_feature(os.path.basename(str.encode(filename))),

第五个错误参考了这位博主的[博文]
https://blog.csdn.net/qq_26535271/article/details/82801220(https://blog.csdn.net/qq_26535271/article/details/82801220)
在此蟹蟹!!!

你可能感兴趣的:(笔记)