iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 11
1
AI & Data

從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型系列 第 11

二、教你怎麼看source code,找到核心程式碼 ep.5:trace code 2

文章說明

文章分段

  1. 文章說明
  2. deeplab的簡單介紹、於我的意義
  3. tensorflow的程式碼特色
  4. 訓練流程的細節
  5. 逛deeplab的github程式,順序:train.py model.py datasets/data_generator.py …

前情提要

上次介紹了train.py的參數部分,今天就接著繼續介紹吧。
 

逛deeplab的github程式

 

train.py(cont.)

462行可以看到,這支程式的必要參數只有train_logdirdataset_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。


上一篇
二、教你怎麼看source code,找到核心程式碼 ep.4:trace code
下一篇
tensorflow 使用tf.estimator, tf.data常見錯誤
系列文
從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型30

尚未有邦友留言

立即登入留言