programing

TensorFlow에서 tf.app.flags의 목적은 무엇입니까?

lovejava 2023. 10. 31. 20:13

TensorFlow에서 tf.app.flags의 목적은 무엇입니까?

텐서플로우에서 몇가지 예시 코드를 읽고 있는데 다음 코드를 발견했습니다.

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

인에tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py

그러나 이 사용에 대한 문서를 찾을 수 없습니다.tf.app.flags.

그리고 이 깃발의 구현은

당연히 이거는.tf.app.flags네트워크를 구성하는 데 어떻게든 사용되는데 API 문서에 없는 이유는 무엇입니까?여기에 무슨 일이 일어나고 있는지 설명해 줄 사람?

tf.app.flags 모듈은 현재 얇은 포장지 주위에 있습니다. python-gflags, 그래서. 해당 프로젝트에 대한 문서화는 해당 프로젝트를 사용하는 방법에 가장 적합한 리소스입니다., argparse에 있는 기능의 부분 집합을 구현합니다.

이 모듈은 현재 데모 앱을 작성하기 위한 편의로 포장되어 있으며, 기술적으로 공개 API의 일부가 아니므로 향후 변경될 수 있습니다.

다음을 사용하여 자체 플래그 구문 분석을 구현하는 것이 좋습니다.argparse아니면 당신이 원하는 어떤 도서관이든.

편집:tf.app.flags모듈은 실제로 다음을 사용하여 구현되지 않습니다.python-gflags, 하지만 비슷한 API를 사용합니다.

tf.app.flags모듈은 Tensorflow 프로그램의 명령줄 플래그를 구현하기 위해 Tensorflow에서 제공하는 기능입니다.예를 들어, 당신이 발견한 코드는 다음과 같은 것을 합니다.

flags.DEFINE_float('learning_rate', 0.01, 'Initial learning rate.')

첫 번째 매개변수는 플래그의 이름을 정의하고, 두 번째 매개변수는 파일을 실행하는 동안 플래그가 지정되지 않은 경우 기본값을 정의합니다.

따라서 다음을 실행하면 다음과 같습니다.

$ python fully_connected_feed.py --learning_rate 1.00

그러면 학습 속도가 1.00으로 설정되고 플래그가 지정되지 않은 경우 0.01로 유지됩니다.

이 기사에서 언급한 것처럼, 구글이 개발자들이 사용하도록 내부적으로 요구하는 것일 수도 있기 때문에 문서는 아마 존재하지 않을 것입니다.

또한 게시물에서 언급한 바와 같이, Tensorflow flags가 다른 Python 패키지에서 제공하는 flag functional과 비교하여 Tensorflow flags를 사용하는 것의 몇 가지 장점이 있습니다.argparse특히 Tensorflow 모델을 다룰 때 가장 중요한 것은 어떤 GPU를 사용할지에 대한 정보와 같은 Tensorflow 특정 정보를 코드에 제공할 수 있다는 것입니다.

단답형:

구글에서는 플래그 시스템을 사용하여 인수의 기본값을 설정합니다.argparse와 비슷합니다.argparse나 sys.argv 대신 자체 플래그 시스템을 사용합니다.

출처 : 전에 거기서 일했었습니다.

긴 답변:

이 예제에서 사용하는 인수의 경우 하이퍼파라미터라고 합니다.신경망에는 원하는 결과를 얻기 위해 최적화할 수 있는 여러 개의 파라미터가 있습니다.예를 들어 batch_size의 경우 한 번의 샷으로 옵티마이저에 전달할 수 있는 데이터 벡터(이미지, 텍스트 또는 원시 데이터 포인트일 수 있음)의 수가 됩니다.

당신은 논쟁의 이름을 구글에서 검색할 수 있고, 그것의 목적이 무엇인지 볼 수 있습니다.딥러닝에 대해 배우고 싶다면 앤드류 응(Andrew Ng) 강좌를 듣는 것을 추천합니다.

사용할때tf.app.run(), 당신은 매우 편리하게 스레드들 사이에 변수를 전달할 수 있습니다.tf.app.flags. 사용에 대한 자세한 내용은 이 항목을 참조하십시오.tf.app.flags.

여러 번 시도해 본 결과 실제 값뿐만 아니라 모든 플래그 키를 인쇄할 수 있게 되었습니다.

for key in tf.app.flags.FLAGS.flag_values_dict():

  print(key, FLAGS[key].value)

언급URL : https://stackoverflow.com/questions/33932901/whats-the-purpose-of-tf-app-flags-in-tensorflow