1. 程式人生 > >Deep Complex Networks 專案執行攻略

Deep Complex Networks 專案執行攻略

首先,本文件會盡量多地覆蓋一些細節。也就是說盡量把你當做啥都不懂的,寧可錯殺一千,絕不放過一個你不知道的知識點,敬請諒解。(此風格為Tips)

  • 正文開始,現在越來越多的論文會在GitHub上公開原始碼。本文件是如何將GitHub上的程式碼執行起來的技巧。

這裡多說一些關於GitHub的技巧吧,GitHub是一個面向開源及私有軟體專案的託管平臺。類似的有碼雲(馬爸爸真的沒有生氣嗎??),原來叫oschina。

  • 拿到一個GitHub專案,首先要看README.md文件,如下圖左下角部分。一般一個專案,或者框架(比如TensorFlow),一定要去看官方文件。哪怕別人的blog寫得再好,也沒有官方文件靠譜。(這已經是血的教訓了!!!)

README

  • README.md這種文件不會講演算法細節,它會告訴你假設你在一個裸機上,只有基本的Requirement,啟動流程是怎樣的。按順序執行!!!按順序執行!!!按順序執行!!!(重要的事情說三遍)
  • 所有的語言,要執行一個專案,都要先裝依賴的包(C語言要裝 gcc,Java有maven管理jar包依賴,Python有pip和anaconda)。例如圖中,就有
pip install numpy Theano keras kerosene
  • 其實所有命令都應該要有執行目錄的說明,當然很明顯,Theano是通用包,所以上面那條命令,在任意目錄開啟命令列執行都行。但是後面那條 pip install .
    命令就必須在專案clone下來後,在專案的路徑下執行了,. 在Linux下是當前路徑的含義(關於Linux最近有心理陰影,所以寫得細一些)

這個文件裡沒寫 Python 的版本號,其實專案裡有 __ init __.py 的,都是 Python 2.7,同時這個檔案的含義是:“Python 直譯器會把這個檔案所在的資料夾當成一個python package,可以在其他的原始碼檔案中 import 進來”。還有就是 pip,如果是Python 3.x,一般是 pip3;雖然見過帝都著名雙強中靠西邊的那所高校有人將 python 軟鏈到 python3.x,但是那都是傻X。

  • 在實踐過程中(我是個反面教材),我以為裝好依賴就沒事了。我執行了 pip install numpy Theano keras kerosenepip install . ,我以為專案就可以跑了。然後我也沒認真看 README,找了一個命令就直接執行了。

在這裡插入圖片描述

  • 我找的是圖中的上面那條,你可以在README裡面看一下。當然,完整的命令是 python 路徑/train.py shallow_model --in-memory --model=shallow_convnet --local-data data/musicnet_11khz.npz 。然後它會報錯(嗯,特地當反面教材的目的是教你如何看報錯)。

在這裡插入圖片描述

  • 對於 Python ,一般原因會寫在最後面,且是用標準英文寫的。例如圖中是 IOError: [Errno 2] No such file or directory: '/Volumes/MyDisk/musicnet_11khz.npz' ,報錯型別是 IOError,原因是沒有這個檔案或者目錄,說明是要下載資料,然後回去看 README 。發現它還要去 https://homes.cs.washington.edu/~thickstn/media/musicnet.npz 這個連結下載資料。

  • 那麼其他幾行報錯是啥意思呢?首先它是一種呼叫層次的說明,很簡單,我就不去細說了,留作探索。

  • 然後我就去下載資料了,當然還重新取樣了一下。(資料11GB,重新取樣需要執行一小時)

  • 然後重新執行 python 路徑/train.py shallow_model --in-memory --model=shallow_convnet --local-data data/musicnet_11khz.npz ,還是會報錯,會報 mimir 沒有 Logger 這個屬性,一開始我不知道為什麼,網上找了一下,mimir也不是像TensorFlow那樣的公用包,那作者應該會說明吧。然後才發現是需要執行 pip install git+git://github.com/bartvm/mimir.git 。所以儘量按順序執行,雖然不按順序執行可能踩比較多的坑,理解會透徹一些。之後還報了一個 IOError ,是 Logger 的那個路徑在程式碼裡寫死了,需要新建目錄。IOError一般是和路徑相關的錯誤。

結束語

  • 路漫漫其修遠兮,加油加油!!