1. 程式人生 > >深度學習第一篇論文——半監督學習Mean Teacher 的學習

深度學習第一篇論文——半監督學習Mean Teacher 的學習

   最近一個月剛接觸深度學習,導師給了一篇論文(mean teacher)讓我先理解然後跑論文裡面的程式碼,這個過程中我出現了很多問題,借這篇blog記錄下來,也是鼓勵自己接著學下去。

  • Mean Teacher 的論文地址:https://arxiv.org/abs/1703.01780;
  • Mean Teacher 的 GitHub 地址:https://github.com/CuriousAI/mean-teacher/

  首先,拿到論文後,因為太久沒有使用英語,簡單的句子還能理解,出現很複雜的句子就束手無策,所以只能一句一句的翻譯,深度學習裡面有很多的名詞需要去了解比如說softmax、卷積神經網路、半監督模型包括論文裡面的 mean teacher ,有道把它翻譯成“吝嗇的卑鄙的老師”,當然在這裡的mean其實是平均的意思,因此,只是翻譯強行理解不可取,所以必須要先學習理解深度學習裡面的概念。

  我看的是莫煩的教程,莫煩網頁https://morvanzhou.github.io/

  在B站和優酷上都有,感覺莫煩的教程對我這種剛接觸深度學習的菜鳥來說還是很有用的,一些概念如過擬合、欠擬合、正則化都是能簡要介紹。看完了他對基本概念的介紹,手動的把論文的翻譯修改一遍,這樣邊寫邊理解論文(網上也有一些推薦論文應該怎麼讀的blog也很有用)。雖然還不能全部理解透徹,但是已經能在自己的腦子裡有一個大概的印象,論文提出了一個什麼方法,解決什麼問題,方法的優勢在哪裡,論文下面的參考文獻有的也要看一看,本文對比 the Π model,Temporal Ensembling 和mean teacher,所以可以瞭解一下另外的模型,它們的異同點優劣點。

  如果論文看得差不多,我們就可以在GitHub上下載原始碼了,下載下來的壓縮包會一般都有pytorch和tensorflow兩個版本的,用哪一個全看個人喜好。我花了兩天裝好了Ubuntu和配置pytorch環境(用慣了window感覺Ubuntu很難上手,不過用了一段時間還是覺得Linux比較簡潔),最後還是用的tensorflow,個人感覺目前tensorflow的使用還是主流。配置tensorflow環境時候要注意下載gpu版本還是cpu版本,gpu快很多,因為實驗的training_step有150000,我就去問老師要了一個gpu的伺服器,伺服器上的環境要自己配置,因為不會有sudo許可權,就要配置屬於自己的python環境,我用的是Miniconda。

  下載的檔案中,Readme很重要,它會包含論文的思想,以及程式碼實現的步驟,一開始沒注意就浪費了很多時間。還有這篇論文裡tensorflow實現時,要求tensorflow的版本要小於1.3,不然執行的時候就會掛掉,這個在GitHub上面有討論,為了方便,我就直接下載了一個tensorflow-gpu 1.2.1版本的。

  然後就在伺服器上面跑,150000步用cpu跑了四天跑了7000+,用GPU一天就能跑完,不過我的程式對視訊記憶體要求比較大,經常跑了幾萬步就掛掉了,因為程式碼裡面設定了用saver儲存了checkpoint,所以可以通過tf.restore從斷點開始執行,我花了一個星期,研究了很多範例,最後還是會報錯,錯誤如下:InvalidArgumentError (see above for traceback): Shape [-1,32,32,3] has negative dimensions   在stack overflow裡面說這是因為沒有給placeholder/images賦值導致的,但是我在所有的collection裡面都沒有找到儲存這個變數名的tensor,就算自己重新定義賦值,依舊報錯,如果有大神路過,知道這個解決方法的希望提醒我一下,感激不盡!自己打算在多看一看tensorflow的知識再寫出來。

  所幸之後重新執行後程序進行的還比較順利,沒有什麼大的問題。可以給老師交差,還要繼續學習。其實在配置環境時候會出現很多問題,也許在別人電腦上一句話解決,在你的電腦上就會花上一天不止的時間,最重要的是心態放平和,我從一開始的淡定到焦急,到崩潰,到絕望,到現在的習慣絕望,我的耐心好了不少,能不能搞出來是玄學問題,做研究就是這樣,不知道能不能出來,投入了很多時間精力也許會是一場空,但是我們一直都在路上,路漫漫其修遠兮,吾將上下而求索。