由于我的环境是python3,而这本书用的是python2,所以学习过程中会有一些代码不兼容的问题,在此列出我遇到的。
chapter_8中使用自己的数据集进行训练时会遇到:
Traceback (most recent call last):
File "main.py", line 14, in <module>
flags.DEFINE_integer("train_size", np.inf, "The size of train images [np.inf]")
File "/home/yangguang/machineLearning/venv4ML/lib/python3.6/site-packages/tensorflow/python/platform/flags.py", line 58, in wrapper
return original_function(*args, **kwargs)
File "/home/yangguang/machineLearning/venv4ML/lib/python3.6/site-packages/absl/flags/_defines.py", line 315, in DEFINE_integer
DEFINE(parser, name, default, help, flag_values, serializer, **args)
File "/home/yangguang/machineLearning/venv4ML/lib/python3.6/site-packages/absl/flags/_defines.py", line 81, in DEFINE
DEFINE_flag(_flag.Flag(parser, serializer, name, default, help, **args),
File "/home/yangguang/machineLearning/venv4ML/lib/python3.6/site-packages/absl/flags/_flag.py", line 107, in __init__
self._set_default(default)
File "/home/yangguang/machineLearning/venv4ML/lib/python3.6/site-packages/absl/flags/_flag.py", line 196, in _set_default
self.default = self._parse(value)
File "/home/yangguang/machineLearning/venv4ML/lib/python3.6/site-packages/absl/flags/_flag.py", line 169, in _parse
'flag --%s=%s: %s' % (self.name, argument, e))
absl.flags._exceptions.IllegalFlagValueError: flag --train_size=inf: Expect argument to be a string or int, found <class 'float'>
原因是np.inf返回的是float,然而在chapter_8的main.py中,"train_size"定义时使用的是DEFINE_integer, 所以将DEFINE_integer改成DEFINE_float即可.
chapter_12中运行python sample.py 时候遇到
File "sample.py", line 19, in main
FLAGS.start_string = FLAGS.start_string.decode('utf-8')
AttributeError: 'str' object has no attribute 'decode'
这是因为在python3中str默认是unicode类型,不需要再decode了(decode('utf-8'):把utf-8解码成unicode编码)。所以这里直接将sample.py里的第19行删除即可!
chapter_20中运行main.py遇到问题:
raise _exceptions.UnrecognizedFlagError(name, value)
absl.flags._exceptions.UnrecognizedFlagError: Unknown command line flag 'data_format'
这是因为用到的'data_format'的flag并没有定义,需要在main.py中开头的flag定义里加入一个:
flags.DEFINE_string('data_format', 'NCHW', 'cpu use NHWC and gpu use NCHW for data_format')
另外会遇到问题:
File "main.py", line 170, in tf.app.run() File "/home/zlq/.local/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 125, in run _sys.exit(main(argv)) File "main.py", line 112, in main 't_save', 't_train', 'display', 'log_level', 'random_seed', 'tag', 'scale']) File "/home/zlq/learning/ceshi/Deep-Learning-21-Examples-master/chapter_20/utils.py", line 12, in get_model_dir attrs = config.__dict__['__flags'] KeyError: '__flags'
修改utils里的attrs 为 config: attrs = config.__dict__['__flags']
attrs = config
另外还会遇到问题:
raise AttributeError(name)
AttributeError: keys
解决办法是修改utils.py文件中的
keys = list(attrs.keys()) 为:
keys = config.__dir__()
即可!