Pythonスクリプトを実行するときにパラメータを渡すには、いくつかの方法

あなたはPythonスクリプトを実行すると、たとえば、いくつかのパラメータを渡す必要がある場合、gpusおよびbatch_size3通りの方法で使用することができます。

Pythonのscript.py 0,1,2 10 
パイソンscript.py -gpus = 0,1,2 --batchサイズ= 10 
パイソンscript.py -gpus = 0,1,2 --batch_size = 10

これら三つの異なる分析方法のフォーマットパラメータは、それぞれ対応するsys.argvargparse、 tf.app.run,  2である官能基を有するパイソン、あるtensorflow提供するための便利な方法。

1.sys.argv

sys モジュールは、例えば、Pythonインタプリタに関連するデータをカプセル化する非常に一般的なモジュールであり、 sys.modules ロードされたモジュール情報の全て有し sys.path ている PYTHONPATH コンテンツを、そして sys.argv その後、入力データパラメータをカプセル化します。
使用 sys.argv パラメトリック以下を含む上記第一のコマンドを受信:
インポートSYS 
のGPU = sys.argvの[1 ]
 #1 のGPU = [INT(gpus.split( ''))] 
BATCH_SIZE = sys.argvの[2 ]
 プリント(GPUの)
 プリント(BATCH_SIZE)

2.argparse

インポートargparse 
パーサ(説明= = argparse.ArgumentParser ' このスクリプトのマニュアル' 
parser.add_argument(" --gpus "、タイプ= STR、デフォルト= " 0 " 
parser.add_argument(" --batchサイズ"、型=整数、デフォルト= 32 
引数 = parser.parse_args()
 プリント(args.gpus)
 プリント(args.batch_size)
なお、このスクリプトは、コマンド実行します python script.py -gpus=0,1,2 --batch-size=10 --batch-size 、自動的に解析されます batch_size
parser.add_argument メソッドの type パラメータは、理論的に正当な任意のタイプとすることができるが、形式にはいくつかの引数には、このようなリストとしてあまりにも面倒、とても一般的な使用であり bool int str float ライン上のこれらの基本的なタイプより複雑なニーズをすることができ str 渡され、その後、手動で解決します。 bool 解析の特別な種類、任意の着信値に解析される True ヌルとして渡された場合、 False

3.tf.app.run

インポートTFとしてtensorflow 
tf.app.flags.DEFINE_string(' のGPU '、なし、' 使用するためのGPU ' 
tf.app.flags.DEFINE_integer(' BATCH_SIZE '、5 ' バッチサイズ' 

FLAGSの =のtf.app.flags .FLAGS 

デフメイン(_):
     プリント(FLAGS.gpus)
     プリント(FLAGS.batch_size)

の場合 __name__ == " __main__ " 
    tf.app.run()

注意すべき点がいくつかあります。

tensorflowのみ、次のメソッドを提供します。

tf.app.flags.DEFINE_stringそれぞれ4つの方法、引数の型。ここで、より厳しい解決、着信1に解析されるであろう任意の残りの値に解析され、
tf.app.flags.DEFINE_integer
tf.app.flags.DEFINE_boolean
tf.app.flags.DEFINE_floatstrintboolfloatboolTrueFalse

スクリプトを受信するには、パラメータを定義する必要があるmainメソッドを:def main(_):このパラメータは、一般的により少ないと、スクリプトの名前で渡され、受信機は強調しました。

ではbatch_size例えばパラメータ、名前は、このパラメータが渡されたときに使用される--batch_size、すなわち、ないに下線とargparse同じ下線することを決議しました。

tf.app.run()エントランスには、スクリプトを見つけると、実行されるmain方法を。唯一の実行中にtf.app.run()、その後から順FLAGS削除パラメータ。
その署名を見てから、それはまた、独自のメソッドを指定することができます実行する必要が、必ずしも呼ばれなければなりませんmain

おすすめ

転載: www.cnblogs.com/answerThe/p/11315185.html