深度学习神经网络往往有过多的Hyperparameter需要调优,优化算法、学习率、卷积核尺寸等很多参数都需要不断调整,使用命令行参数是非常方便的。有两种实现方式,一是利用python的argparse包,二是调用tensorflow自带的app.flags实现。
tf定义了tf.app.flags,用于接受命令行传递参数,相当于接受argv。首先调用自带的DEFINE_string,DEFINE_boolean DEFINE_integer, DEFINE_float设置不同类型的命令行参数及其默认值。当然,也可以在终端用命令行参数修改这些默认值。
import tensorflow as tf
flags = tf.app.flags
############################
# hyper parameters #
############################
# For separate margin loss
flags.DEFINE_float('m_plus', 0.9, 'the parameter of m plus')
flags.DEFINE_float('m_minus', 0.1, 'the parameter of m minus')
flags.DEFINE_float('lambda_val', 0.5, 'down weight of the loss for absent digit classes')
FLAGS = tf.app.flags.FLAGS
def main(_):
print(FLAGS.m_plus)
print(FLAGS.m_minus)
print(lambda_val)
if __name__ == '__main__':
tf.app.run() #执行main函数
flags = tf.app.flags
############################
# hyper parameters #
############################
# For separate margin loss
flags.DEFINE_float('m_plus', 0.9, 'the parameter of m plus')
flags.DEFINE_float('m_minus', 0.1, 'the parameter of m minus')
flags.DEFINE_float('lambda_val', 0.5, 'down weight of the loss for absent digit classes')
FLAGS = tf.app.flags.FLAGS
def main(_):
print(FLAGS.m_plus)
print(FLAGS.m_minus)
print(lambda_val)
if __name__ == '__main__':
tf.app.run() #执行main函数
执行
root:~/Tensorflowexample$ python flags_example.py
0.9
0.1
0.5
root:~/Tensorflowexample$ python flags_example.py
root:~/Tensorflowexample$ python flags_example.py --m_plus 1.0 --m_minus 0.2 --lambad_val 0.9
1.0
0.2
0.5
0.9
0.1
0.5
root:~/Tensorflowexample$ python flags_example.py
root:~/Tensorflowexample$ python flags_example.py --m_plus 1.0 --m_minus 0.2 --lambad_val 0.9
1.0
0.2
0.5