if name == 'main': の必要性がわかりません。
# coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function import os import time import tensorflow as tf import model as model from reader import Cifar10Reader FLAGS = tf.app.flags.FLAGS tf.app.flags.DEFINE_integer('epoch',30,"訓練するEpoch数") tf.app.flags.DEFINE_string('data_dir','./data/',"訓練データのディレクトリ") tf.app.flags.DEFINE_string('checkpoint_dir','./checkpoints/',"チェックポイントを保存するディレクトリ") filenames = [ os.path.join(FLAGS.data_dir,'data_batch_%d.bin' % i) for i in range(1,6) ] def main(argv=None): train_placeholder = tf.placeholder(tf.float32,shape=[32,32,3],name='input_image') image_node = tf.expand_dims(train_placeholder,0) logits = model.inference(image_node) with tf.Session() as sess: sess.run(tf.initialize_all_variables()) total_duration = 0 for epoch in range(1,FLAGS.epoch+1): start_time = time.time() for file_index in range(5): print('Epoch %d: %s' % (epoch,filenames[file_index])) reader = Cifar10Reader(filenames[file_index]) for index in range(10000): image = reader.read(index) logits_value = sess.run([logits],feed_dict={ train_placeholder:image.byte_array, }) if index % 1000 ==0: print('[%d]: %r'% (image.label,logits_value)) reader.close() duration = time.time() - start_time total_duration += duration print('epoch %d duration = %d sec'%(epoch,duration)) tf.train.SummaryWriter(FLAGS.checkpoint_dir,sess.graph) print('Total duration = %d sec'% total_duration) if __name__ == '__main__': tf.app.run()
というCIFAR-10形式のデータセットを推論するプログラムを書きました。
このコードの最後に
if __name__ == '__main__': tf.app.run()
という記述がありますが、この記述の必要性がわかりません。
http://azuuun-memorandum.hatenablog.com/entry/2015/05/09/002549
の記事を読んで、if name == 'main':
メソッドの機能はわかりました。(トップレベルファイルで実行された時にのみ、テスト用の値出力処理が行われるようにすることができる 事)
しかし、この記述がこのコードの一番下で必要な理由がわかりません。
どうしてこの記述は必要なのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/04/12 10:19
2017/04/12 10:35