TF.app.run和TF.flags的使用

作为深度调参工程师,能够自动化的脚本一键完成调参就很开心了。TensorFlow定义了tf.app.flags,用于支持接受命令行传递参数。通过改变的相关参数,存储中间变量和结果,调出最优化的参数可以大大提高效率。

深度学习基础

  • Tensorflow参数接口
# -*- coding:utf-8 -*-

# test.py
import tensorflow as tf

FLAGS = tf.app.flags.FLAGS

##第一个是参数名称,第二个参数是默认值,第三个是参数描述
tf.app.flags.DEFINE_string('str_name', 'def_v_1',"descrip1")
tf.app.flags.DEFINE_integer('int_name', 10,"descript2")
tf.app.flags.DEFINE_boolean('bool_name', False, "descript3")

##必须带参数,否则:'TypeError: main() takes no arguments (1 given)';   ##main的参数名随意定义,无要求
def main(_):
    print(FLAGS.str_name)
    print(FLAGS.int_name)
    print(FLAGS.bool_name)

if __name__ == '__main__':
    #tf.app.run()的作用:先处理flag解析,然后执行main函数
    tf.app.run()

运行

# 采用默认值的方式
python test.py 
# def_v_1
# 10
# False

# 有参传递的方式
python test.py --str_name="test" --int_name=12
# test
# 12
# False
  • 深度学习常用的参数
tf.flags.DEFINE_integer("batch_size", "2", "batch size for training")
tf.flags.DEFINE_string("logs_dir", "logs/", "path to logs directory")
tf.flags.DEFINE_string("data_dir", "MIT_SceneParsing/", "path to dataset")
tf.flags.DEFINE_float("learning_rate", "1e-4", "Learning rate for Adam Optimizer")
tf.flags.DEFINE_string("model_dir", "Model_zoo/", "Path to vgg model mat")
tf.flags.DEFINE_bool('debug', "False", "Debug mode: True/ False")
tf.flags.DEFINE_string('mode', "train", "Mode train/ test/ visualize")

重构原有的网络

你可能感兴趣的:(TF.app.run和TF.flags的使用)