是否可以按类型对tensorflow FLAGS进行分组并从中生成一个字符串?

时间:2016-09-22 15:34:35

标签: python machine-learning computer-vision tensorflow

是否可以按类型对tensorflow FLAGS进行分组? 例如。 一些标志与系统相关(例如,线程数),而其他标志是模型超级模型。

那么,是否可以使用模型hyperparams FLAGS,以生成字符串? (该字符串将用于标识模型文件名)

由于

2 个答案:

答案 0 :(得分:0)

我猜你是否想要将超参数自动存储为文件名的一部分,以便更好地组织实验?不幸的是,使用TensorFlow并不是一个很好的方法,但你可以看一下构建在它上面的一些高级框架,看看它们是否提供类似的东西。

答案 1 :(得分:0)

我最终设法通过将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 http://stackoverflow.com/a/6027615/2476373
    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)