iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 14
1
AI & Data

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

二、教你怎麼看source code,找到核心程式碼 ep.7:session、slim.learning.train()

文章說明

文章分段

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

 

前情提要

本來預期ep.6可以把train.py講完的,但還留了幾項沒有帶到,ep.7真的會結束了!
接著會講到tf.ConfigProto()、ProfileContext()、以及slim.learning.train(),也就是程式的尾巴部分。

讓我們開始吧。

 

逛deeplab的github程式(cont.)

train.py (cont.)


427行的configProto()是一個只有attribute的class。他可以控制的所有參數,都可以在官網的API doc找到。順帶提一下如何看官網的doc:

 

現在點進去document都會跳到2.xx的API,但其實我現在還在用1.13的版本。而因為1.0跟2.0的tensorflow差得蠻大的,2.0的tensorflow是捨棄掉configProto的,所以有留個支援包可用。

 


如果想直接看1.x的API,可以點左上角的去看目前還留在doc上的1.15。

 

不過轉過去後,就要從頭找起,左邊的列表是用字母表排列的,但tf.c開頭的沒有叫做configProto的,這時就要再往上找,到tf那裡找,一樣順著字母表下來就看到ConfigProto。

 

接著看到他的說明頁面寫著:A ProtocolMessage,意味不明,下面有許多Attributes,同樣意義不明。

 

這時可以直接去點view source on Github,就可以看到原始碼就是一堆message大括號。

 
 


切換branch可以套用在所有要查的method上。那如果你看著別人用1.14版的示範操作,但本身是用1.13版,結果在某處報錯,那麼你就得用github的branch切換,去找對應版本的原始碼是怎麼撰寫的。

 
 

回來講程式。

 


435行的ProfileContext()是用來細部探討模型性能的東西,簡單來說,你想知道tensorflow Graph中每段計算的時間,就可以用它;或是想知道模型細部的參數分佈,也可以用它。

 


最後446行slim.learning.train()。

 


如果看不懂網路上的教學,想直接去看原始碼的朋友,可以先透過slim找到slim是使用放在tf.contrib的slim。

 


那找法就是去上面點tensorflow

 

然後再點進tensorflow repository,再點進tensorflow資料夾contrib資料夾只在1.xx的branch找得到,所以照上面說的方法切換branch。

 


再點進contrib資料夾,找到slim資料夾,進python/slim資料夾,接著找到learning.py找到train(),除了副程式下方有說明之外,上方亦有tf-slim的相關介紹。

 

耶,帶完train.py了,明天可以講新檔案了。


上一篇
二、教你怎麼看source code,找到核心程式碼 ep.6:tensorflow的API琳瑯滿目
下一篇
二、教你怎麼看source code,找到核心程式碼 ep.8:資料前處理(e.g. Deeplab)
系列文
從零.4開始我的深度學習之旅:從 用tf.data處理資料 到 用tf.estimator或tf.keras 訓練模型30

尚未有邦友留言

立即登入留言