最近試試深度學習能做點什么事情。MXNet是一個與Tensorflow類似的開源深度學習框架,在GPU顯存利用率上效率高,比起Tensorflow顯著節約顯存,並且天生支持分布式深度學習,單機多卡、多機多卡支持豐富,擁有着良好的技術架構。目前是亞馬遜AWS的官方深度學習框架。由於其團隊以MXNet產品本身為先,所以文檔資料較少。現在還稍微多了一點。
1. 搭建Jupyter notebook遠程開發環境
Jupyter notebook支持python、R、shell等等,功能非常全面。基於Jupyter notebook,我在實驗室的K80 GPUs服務器上搭建MXNet環境(搭建步驟見官網,很簡單,131上已裝好),然后利用SSH隧道傳輸,可以隨時隨地在瀏覽器里編程,使代碼加速運行在K80 GPUs設備上。
Step-by-step教程見博客:http://www.cnblogs.com/shixiangwan/p/6406777.html
2. 卷積神經網絡(CNN)
CNN較適合於矩陣特征,例如圖像分類,目標檢測。生物信息學方面,蛋白質的二級結構預測也有相關paper,牛津出版社的《Deep learning in bioinformatics》敘述很詳細:
[attachimg]3437[/attachimg]
當然,CNN也是非常基礎的,目前還有RNN(遞歸神經網絡),LSTM(長短記憶網絡,NLP和speech領域居多),殘差網絡(更深且快的卷積網絡),GAN(生成對抗網絡,亦有很多衍生結構)等等,技術更迭非常之快,一個比較好的書籍是《Deep Learning》,Github上有民間中文版。
對於一些多標簽分類任務,想方法把特征做成矩陣形式,也可以利用CNN做分類。這里我寫了個試驗性程序來證明CNN比傳統的多層感知機要優秀些。
數據描述:特征是14489個、34維;標簽是14489個、42維。
程序試驗:數據直接進入CNN肯定過擬合,於是我將每個特征復制34份形成34*34矩陣(這樣做是不對的,只是先跑通CNN)。訓練集:驗證集:測試集=8:1:1,然后接入普通的卷積網絡,用測試集看最終結果。
結果描述:准確率96.5%,這個計算方式是14489*0.1*42=60858個測試樣本標簽中,有58723個分對的。
源碼及運行運行過程輸出見:https://github.com/ShixiangWan/MXNet-Bioinformatics/blob/master/protein.ipynb
源碼及數據見:https://github.com/ShixiangWan/MXNet-Bioinformatics
程序運行需要(131全都有):
1. MXNet環境
2. Python 2.7環境,numpy包