本來預期ep.6可以把train.py講完的,但還留了幾項沒有帶到,ep.7真的會結束了!
接著會講到tf.ConfigProto()、ProfileContext()、以及slim.learning.train(),也就是程式的尾巴部分。
讓我們開始吧。
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了,明天可以講新檔案了。