是否可以按类型对 tensorflow FLAGS 进行分组并从中生成一个字符串?
Is it possible to group tensorflow FLAGS by type and generate a string from them?
是否可以按类型对 tensorflow FLAGS 进行分组?
例如。
一些标志与系统相关(例如线程数),而其他标志是模型超参数。
那么,是否可以使用模型超参数FLAGS来生成字符串? (该字符串将用于识别模型文件名)
谢谢
我猜您想要自动将超参数存储为文件名的一部分,以便更好地组织您的实验?不幸的是,没有使用 TensorFlow 执行此操作的好方法,但您可以查看构建在它之上的一些高级框架,看看它们是否提供类似的东西。
我最终设法通过将 FLAGS 对象视为字典,然后将字典扁平化为 key=value 的字符串来做到这一点。
代码如下:
def build_string_from_dict(d, sep='__'):
fd = _flatten_dict(d)
return sep.join(['{}={}'.format(k, _value2str(fd[k])) for k in sorted(fd.keys())])
def _flatten_dict(d, parent_key='', sep='_'):
# from
items = []
for k, v in d.items():
new_key = parent_key + sep + k if parent_key else k
if isinstance(v, collections.MutableMapping):
items.extend(_flatten_dict(v, new_key, sep=sep).items())
else:
items.append((new_key, v))
return dict(items)
flags_dict = vars(FLAGS)['__flags']
print build_string_from_dict(flags_dict)
是否可以按类型对 tensorflow FLAGS 进行分组? 例如。 一些标志与系统相关(例如线程数),而其他标志是模型超参数。
那么,是否可以使用模型超参数FLAGS来生成字符串? (该字符串将用于识别模型文件名)
谢谢
我猜您想要自动将超参数存储为文件名的一部分,以便更好地组织您的实验?不幸的是,没有使用 TensorFlow 执行此操作的好方法,但您可以查看构建在它之上的一些高级框架,看看它们是否提供类似的东西。
我最终设法通过将 FLAGS 对象视为字典,然后将字典扁平化为 key=value 的字符串来做到这一点。
代码如下:
def build_string_from_dict(d, sep='__'):
fd = _flatten_dict(d)
return sep.join(['{}={}'.format(k, _value2str(fd[k])) for k in sorted(fd.keys())])
def _flatten_dict(d, parent_key='', sep='_'):
# from
items = []
for k, v in d.items():
new_key = parent_key + sep + k if parent_key else k
if isinstance(v, collections.MutableMapping):
items.extend(_flatten_dict(v, new_key, sep=sep).items())
else:
items.append((new_key, v))
return dict(items)
flags_dict = vars(FLAGS)['__flags']
print build_string_from_dict(flags_dict)