Tf.app.flags 组件使用

AttributeError: module ‘tensorflow.python.platform.flags’ has no attribute ‘DEFINE_enum’ 是新版本组件才有的枚举类型吗


杨飞 2018-4-16 16:47:48

DEFINE_enum 这个 flag 是 1.5 版本以后才有的。

这里面好像没有它的定义或声明,不过你看 16 行有条注释:
“”“Import router for absl.flags. See https://github.com/abseil/abseil-py.”“”
没错,它是从 absl 这个模块 import 进来的。在 25 行:
from absl.flags import * # pylint: disable=wildcard-import
定义在这里:

是的,隐藏的好深!!!
这里不光定义的有 DEFINE_enum,还有 DEFINE_list,DEFINE_spaceseplist,DEFINE_Multi,DEFINE_multi_string,DEFINE_multi_integer,DEFINE_multi_float,DEFINE_multi_enum,DEFINE_alias 等等各种 flag~


libertatis 发表于 2018-4-16 18:59:28

bingo 这个貌似就是 google 内部用的 flag 库


舟 3332 发表于 2018-4-16 20:16:36

不过,对于 1.5 以前的版本,也是可以用 DEFINE_enum 这个 flag 的。比如我是 1.2 的版本。
首先安装 absl 包:
pip install absl-py
安装完以后,就可以在我们的代码中使用 DEFINE_enum 啦。
就像在 flags.py 源码中一样:
from absl.flags import *
import 进来以后就可以直接使用啦:
DEFINE_enum (…)

下面是 absl 模块的 GitHub 地址:


libertatis 2018-4-16 20:57