最近由于要解決一個(gè)問題,需要用到之前使用不多的python和完全不熟悉的Tensorflow,因此踩坑比較多,解決問題的進(jìn)展比較緩慢?!敖鉀Q問題的進(jìn)展比較緩慢”本身就是一個(gè)問題,我不希望這個(gè)問題一直是個(gè)問題,所以我希望通過復(fù)盤和思考來(lái)解決這個(gè)問題。
首先,我想總結(jié)一下我研究過程中的痛點(diǎn):
1. 對(duì)python的語(yǔ)法不熟,需要做什么的時(shí)候需要現(xiàn)查
2. 對(duì)numpy、pandas等一些比較成熟的工具不熟
3. 對(duì)tensorflow不熟,api不知道應(yīng)該如何使用,遇到坑之后容易踩下去,并且比較費(fèi)勁才爬得出來(lái)。
4. 目前要研究的是一個(gè)比較大的題目,需要解決的問題是一系列的,有時(shí)候面對(duì)眾多的問題,不知道在哪里下手。
首先,我想給自己打氣,這些不熟都是正?,F(xiàn)象,研究過程中肯定充滿了“不熟&踩坑”,實(shí)際上整個(gè)研究過程就是一個(gè)不斷解決問題的過程,當(dāng)坑踩得差不多了,東西都熟悉得差不多了,問題都解決得差不多了,研究目的也就基本達(dá)到了。
仔細(xì)分析一下羅列的三個(gè)痛點(diǎn),實(shí)際上可以分為三類:
1. 對(duì)發(fā)布已久,已成氣候的工具不熟
2. 對(duì)比較新的工具不熟
3. 沒有形成解決問題的方法論
第一類問題實(shí)際上造成的麻煩不大,遇到了問題后一般如果能夠準(zhǔn)確找到log,然后google一下,一般馬上能夠找到解決方案。只不過這種使用工具的方式會(huì)讓我對(duì)工具的掌握不夠系統(tǒng),看到別人用過后自己才會(huì)用。針對(duì)于目前趕時(shí)間的情況,也只能這樣進(jìn)行,之后如果又需要,可以對(duì)這些工具進(jìn)行系統(tǒng)的學(xué)習(xí)。
第二類問題比較麻煩,首先tensorflow目前并沒有很成熟,它仍然處于快速發(fā)展的階段,網(wǎng)上雖然有很多教程,但和我目前使用的版本不同,api差別較大(就連官方的demo都有這樣的情況)。所以會(huì)造成:
1. 使用api的方式不科學(xué)
2. 使用教程里的方式會(huì)報(bào)各種各樣的錯(cuò)誤
對(duì)于第一個(gè)問題,可以:
1. 搜索教程的時(shí)候使用時(shí)間過濾的方式,盡量選擇比較新的教程。
2. 官方的文檔還是要抽出時(shí)間快速的過一遍,起碼心里有數(shù),遇到了什么問題可以去哪里查
3. 如果要使用某方面的api,可以看看某方面官方的demo
對(duì)于第二個(gè)問題,我覺得相對(duì)于第一個(gè)問題是比較好解決的,報(bào)錯(cuò)的log就在那里,google一下,一般只要耐心一點(diǎn),是可以比較快速的找出解決方案的。
最后也是最大的問題:沒有形成研究問題的方法論
面對(duì)比較復(fù)雜的問題的時(shí)候,有時(shí)候就一團(tuán)亂麻了,不知道從何處入手。遇到這樣的情況,容易灰心,很容易就停下來(lái),后來(lái)慢慢發(fā)現(xiàn),這個(gè)時(shí)候繼續(xù)收集信息才是正解。繼續(xù)收集信息,繼續(xù)對(duì)當(dāng)前問題有更深入的了解,繼續(xù)多提一些問題,往往更加有利于將問題細(xì)化,而將復(fù)雜問題細(xì)化,就是解決復(fù)雜問題的開始。將復(fù)雜問題細(xì)化后,很有可能得到的解決這個(gè)復(fù)雜問題的藍(lán)本,有了這個(gè)藍(lán)本繼續(xù)將問題不斷的細(xì)化。
問題細(xì)化之后,在解決具體問題的過程中往往會(huì)發(fā)現(xiàn)需要對(duì)藍(lán)本進(jìn)行調(diào)整。不斷的反饋和調(diào)整,問題往往就容易解決。所以解決具體問題時(shí)試錯(cuò)的效率對(duì)解決整個(gè)問題的效率的影響非常大,這也就是為什么我對(duì)自己提出“如果有什么想法,就快速執(zhí)行,快速反饋”的原因。