命令行flags: Python flags & TensorFlow flags

内容提取自Medium

flags

flags可以帮助我们通过命令行来动态的更改代码中的参数。为了更好的理解TensorFlow的命令行flags(标记)功能,我们先简单了解一下Python的flags

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/9/19 10:46
# @Author  : Young.W
# @File    : demo_of_flags.py
# @Project : 随笔

from absl import flags
from absl import app

FLAGS = flags.FLAGS

flags.DEFINE_string('model', None, 'model to run')

def main(argv):
    print('Hello World')
    print('selected model', FLAGS.model)

if __name__ == '__main__':
    app.run(main)

这是一个简单的示例程序来展示如何使用 command line flags,除了使用 absl 外,还可以使用 argparser。

import argparser

现在我们可以在命令行中运行我们的示例程序

# 运行示例程序
python demo_of_flags.py

# 更改相应参数
python demo_of_flags.py --model "My model"

# 获得帮助信息
python demo_of_flags.py -help
python demo_of_flags.py -helpfull

TensorFlow中的flags

机器学习的模型中有大量需要tuning的超参数,因此我们需要一种灵活的方式对代码进行调整。下面的示例展示了如何达成我们的需求。Source Code

import tensorflow as tf

flags = tf.app.flags
FLAGS = flags.FLAGS
flags.DEFINE_float(‘learning_rate’, 0.01, ‘Initial learning rate.’)
flags.DEFINE_integer(‘max_steps’, 2000, ‘Number of steps to run trainer.’)
flags.DEFINE_integer(‘hidden1’, 128, ‘Number of units in hidden layer 1.’)
flags.DEFINE_integer(‘hidden2’, 32, ‘Number of units in hidden layer 2.’)
flags.DEFINE_integer(‘batch_size’, 100, ‘Batch size. ‘
‘Must divide evenly into the dataset sizes.’)
flags.DEFINE_string(‘train_dir’, ‘data’, ‘Directory to put the training data.’)
flags.DEFINE_boolean(‘fake_data’, False, ‘If true, uses fake data ‘
‘for unit testing.’)

你可能感兴趣的:(命令行flags: Python flags & TensorFlow flags)