命令行flags: Python flags & Ten
2018-09-19 本文已影响68人
Young_W_F
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.’)