본문 바로가기
Tensorflow

10. Tensorflow 시작하기 - flags

by 대소니 2016. 11. 4.


Tensorflow 에서 제공하는 flags 객체를 사용하면 고정값으로 되어 있는 기본적인 데이터를 편리하게 사용할 수 있습니다.


flags 객체는 int, float, boolean, string 의 값을 저장하고, 가져다 사용하기 쉽게 해주는 기능을 합니다.

사용방법도 간단하고 텐서플로 튜토리얼에서도 사용되니 보시면 좋을 것 같습니다.


<TensorFlow Mechanics 101 예제에서>


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.')



tf.app.flags 로 flags객체에 접근을 할 수 있습니다.

이 객체는 기본적으로 제공되는 DEFINE_*** 로 시작되는 함수를 통해서 key, value 형식과 비슷하게 원하는 데이터를 정의할 수 있게 됩니다.

이들 함수의 세번째 arg는 도큐먼트를 위한 스트링 값임으로 신경쓰지 않아도 됩니다.



위와 같이 정의된 값들은 flags.FLAGS 를 통해서 어디에서든지 호출하여 사용할 수 있게 됩니다.

FLAGS = flags.FLAGS 로 모든 값들을 가져와서 FLAGS.learning_rate 와 같이 사용하면 0.01의 값이 출력되는 것을 확인할 수 있습니다.


FLAGS = flags.FLAGS
print(FLAGS.learning_rate)

>> 0.01



정석은 위와 같이 사용하는 것인데,

이를 좀더 간결하게 사용하기 위해서는 아래와 같이 직접적으로 FLAGS 를 가져와서 정의하고 사용하는 것도 가능합니다.


import tensorflow as tf

FLAGS = tf.app.flags.FLAGS
FLAGS.learning_rate = 0.02
FLAGS.name = 'test'

print(FLAGS.learning_rate)
print(FLAGS.name)

>>0.02

  test



댓글