1. 程式人生 > >渣渣的deepwalk之旅——win10下deepwalk配置和執行

渣渣的deepwalk之旅——win10下deepwalk配置和執行

渣渣的deepwalk之旅

剛開始學習網路表示學習,看完《Deepwalk Online learning of social representations》後,打算去github上下載原始碼並自己測試,實現deepwalk演算法,結果就開始漫長的修正bug之路:

  • 對deepwalk論文的理解
  • 原始碼和資料集
  • 各種庫函式安裝失敗(scipy和gensim)
  • 成功執行

對deepwalk論文的理解

《DeepWalk: Online Learning of Social Representations - Bryan Perozzi》 —— [ 論文下載 ]

首先,感覺這篇論文的亮點在於作者觀察到文字語料中詞語出現的頻率和隨機遊走的網路上節點被訪問到的次數都服從冪律分佈(zipf),這成為deepwalk成立的前提。所以可以把節點作為單詞,隨機遊走的路徑作為句子,輸入到word2vec中訓練得到節點的向量表示。所以缺點應該是沒有明確的優化目標函式,所以給後面人提供很大改進空間。

具體演算法

用random walk(隨機遊走)生成|V|個子網路,然後送到word2vec去訓練,聽起來就是這麼簡單。
主要步驟:Network/graph—random walk—得到節點序列(representation mapping)—放到skip-gram模型中(word2vec模型)—-output:representation

程式碼塊

 walks = graph.build_deepwalk_corpus(G,num_paths=args.number_walks,
                                     path_length=args.walk_length, alpha=0, rand=random.Random(args.seed))
    print("Training...")
    model = Word2Vec(walks, size=args.representation_size, window=args.window_size, min_count=0
, workers=args.workers)

流程圖

這裡寫圖片描述

原始碼和資料集

這裡寫圖片描述

各種庫函式安裝失敗(scipy和gensim)

第一次安裝了pycharm編輯器,又從官網上下載了python3.6版本(簡直後悔),匯入進包後,發現這個編輯器不錯,滑鼠放在未匯入的包處後,會顯示自動匯入,但是scipy沒法自動下載成功,需要先安裝好numpy後,再從http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy找到對應的.whl檔案下載後,從命令列裡面進入到下載後文件的位置,然後輸入“pip install scipy‑0.19.1‑cp36‑cp36m‑win_amd64.whl”就可以安裝了。後來只剩下gensim==0.10.2沒安裝成功,結果查詢發現3.6版本不支援這個版本的gensim(內心小怪獸要出來了!!!)氣得我直接刪掉全部python,第二天重新開始安裝。

這一次長經驗了,直接安裝的anaconda的python2.7,真心推薦,因為裡面自帶的庫函式非常非常全,都是用於科學計算的,對於深度學習機器學習應該夠了。(注意要把Python執行路徑放置在path環境變數裡面,例如:E:\anaconda\install\Scripts)
然後要自己下載pip(http://www.cnblogs.com/NanShan2016/p/5518235.html)參考這個部落格,講的很詳細。

小插曲:因為我的使用者目錄是中文的,所以會出現編碼錯誤的問題,也就是當呼叫pip安裝時,會出現如下錯誤:
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xbf in position 7: ordinal not in range(128)
解決辦法是:
python目錄 Python27\Lib\site-packages 建一個檔案sitecustomize.py
內容寫:
import sys
sys.setdefaultencoding(‘gb2312’)
python會自動執行這個檔案。

然後安裝requirements.txt中的檔案,開啟github裡面的說明,
這裡寫圖片描述
先進入deepwalk資料夾然後安裝txt檔案。

最後當安裝gensim的時候,一定要先裝Visual C++庫2008 SP1 Redistributable Package,還有,安裝VCForPython27.msi,之後再安裝gensim 0.10.2 可以使用命令 pip install gensim==0.10.2,但是還是出錯了!說是因為ascii碼轉換出錯,就是路徑中出現中文,參考這個部落格
http://blog.csdn.net/all_over_servlet/article/details/45112221裡面的第二個方法,一定一定注意空格和回車等問題,http://dikar.iteye.com/blog/308934

最後當gensim安裝成功了,那就大功告成了。

成功執行

最後一步 ,一定要進入deepwalk的目錄下,然後python setup.py install測試deepwalk,按照下面格式輸入
這裡寫圖片描述
開啟karate.embedding檔案
結果如圖:
這裡寫圖片描述