上次介紹了train.py的參數部分,今天就接著繼續介紹吧。
462行可以看到,這支程式的必要參數只有train_logdir
跟dataset_dir
,其他的參數不是有預設值就是不一定需要。
然後執行tf.app的run() method的話,預設就會去執行檔案裡的main()。
main()的功能順去就是:
274行:設定log file 要記錄哪個層級的資訊(INFO級)
275-287行:在處理使用多個GPU的時候,要copy幾份資料、分派幾份工作,然後把一個batch的資料平均分散給多個GPU。
292行:開一張新的tensorflow graph作為放置接下來有關tensor的東西,像是dataset的運算操作、神經網路的各層、update神經網路的運算操作等。
293行:處理多GPU的部分。
294-310行:data_generator
是在datasets資料夾裡的程式,就是負責處理data成為model訓練時可用的形式的程式。
312-314行:313也是處理多GPU的部分。global_step是紀錄神經網路的參數更新的次數,tf.train有提供method來取得global_step。
接下來316-320行是準備關於模型的部分;tf.slim和tf.estimater在建立模型時,都會希望將處理model的程式是獨立的寫在一個function中,作為model_fn
。然後model的argument是一個tuple,共有3項,第一個是建立好的dataset的iterator,第二個dictionary,放了model output的型態應該是什麼、還有dataset裡的類別有多少個,第三個是dataset中作為background的label 是多少。
321行的部分是在處理把模型資訊複製,分送給不同的GPU的工作。
train.py的221行就是model_fn的程式。
今天先停在這,心情持續低落了幾天,都沒做什麼事T_T。