今天更新關于常見深度學習模型適合練手的項目。這些項目大部分是我之前整理的,基本上都看過,大概倆特點:代碼不長,一般50-200行代碼,建議先看懂然后再實現(xiàn)和優(yōu)化,我看基本上所有的實現(xiàn)都有明顯可優(yōu)化的地方;五臟俱全,雖然代碼不長,但是該有的功能都有,該包含的部分也基本都有。所以很適合練手,而且實現(xiàn)后還可保存好,以后很多任務可能就會用到。
本文包括簡介、練手項目和我的建議(建議最好看看這部分)。
簡介
本篇是深度學習最常見的 26 個模型匯總的姐妹篇,建議先看那篇再看本篇。本篇新增了 26 個模型的練手項目。
練手項目
2.1 Feed forward neural networks (FF or FFNN) and perceptrons (P)
前饋神經網絡和感知機,信息從前(輸入)往后(輸出)流動,一般用反向傳播(BP)來訓練。算是一種監(jiān)督學習。
對應的代碼:
https://github.com/danijar/layered
https://github.com/civisanalytics/muffnn
2.2 Radial basis function (RBF)
徑向基函數(shù)網絡,是一種徑向基函數(shù)作為激活函數(shù)的FFNNs(前饋神經網絡)。
對應的代碼:
https://github.com/eugeniashurko/rbfnnpy
2.3 Hopfield network (HN)
Hopfield網絡,是一種每個神經元都跟其它神經元相連接的神經網絡。
對應的代碼:
https://github.com/yosukekatada/Hopfield_network
2.4 Markov chains (MC or discrete time Markov Chain, DTMC)
馬爾可夫鏈 或離散時間馬爾可夫鏈,算是BMs和HNs的雛形。
對應的代碼:
Markov chains:https://github.com/jsvine/markovify
DTMC:https://github.com/AndrewWalker/dtmc
2.5 Boltzmann machines (BM)
玻爾茲曼機,和Hopfield網絡很類似,但是:一些神經元作為輸入神經元,剩余的是隱藏層。
對應的代碼:
https://github.com/yell/boltzmann-machines
2.6 Restricted Boltzmann machines (RBM)
受限玻爾茲曼機,和玻爾茲曼機以及Hopfield網絡都比較類似。
對應的代碼:
https://github.com/echen/restricted-boltzmann-machines
2.7 Autoencoders (AE)
自動編碼,和FFNN有些類似,它更像是FFNN的另一種用法,而不是本質上完全不同的另一種架構。
對應的代碼:
https://github.com/caglar/autoencoders/blob/master/ae.py
2.8 Sparse autoencoders (SAE)
稀疏自動編碼,跟自動編碼在某種程度比較相反。
對應的代碼:
https://github.com/caglar/autoencoders/blob/master/sa.py
2.9 Variational autoencoders (VAE)
變分自動編碼,和AE架構相似,不同的是:輸入樣本的一個近似概率分布。這使得它跟BM、RBM更相近。
對應的代碼:
https://github.com/mattjj/svae
2.10 Denoising autoencoders (DAE)
去噪自動編碼,也是一種自編碼機,它不僅需要訓練數(shù)據(jù),還需要帶噪音的訓練數(shù)據(jù)。
對應對應的代碼:
https://github.com/caglar/autoencoders/blob/master/da.py
2.11 Deep belief networks (DBN)
深度信念網絡,由多個受限玻爾茲曼機或變分自動編碼堆砌而成。
對應的代碼:
https://github.com/albertbup/deep-belief-network
2.12 Convolutional neural networks (CNN or deep convolutional neural networks, DCNN)
卷積神經網絡,這個不解釋也都知道。
對應的代碼:
CNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_CNN.py
DCNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_DeepCNN.py
2.13 Deconvolutional networks (DN)
去卷積網絡,又叫逆圖形網絡,是一種逆向的卷積神經網絡。
對應的代碼:
https://github.com/ifp-uiuc/anna
2.14Deep convolutional inverse graphics networks (DCIGN)
深度卷積逆向圖網絡,實際上是VAE,且分別用CNN、DNN來作編碼和解碼。
對應的代碼:
https://github.com/yselivonchyk/TensorFlow_DCIGN
2.15 Generative adversarial networks (GAN)
生成對抗網絡,Goodfellow的封神之作,這個模型不用解釋也都知道。
對應的代碼:
https://github.com/devnag/pytorch-generative-adversarial-networks
2.16 Recurrent neural networks (RNN)
循環(huán)神經網絡,這個更不用解釋,做語音、NLP的沒有人不知道,甚至非AI相關人員也知道。
對應的代碼:
https://github.com/farizrahman4u/recurrentshop
2.17 Long / short term memory (LSTM)
長短期記憶網絡,RNN的變種,解決梯度消失/爆炸的問題,也不用解釋,這幾年刷爆各大頂會。
對應的代碼:
https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_LSTM.py
2.18 Gated recurrent units (GRU)
門循環(huán)單元,類似LSTM的定位,算是LSTM的簡化版。
對應的代碼:
https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_GRU.py
2.19 Neural Turing machines (NTM)
神經圖靈機,LSTM的抽象,以窺探LSTM的內部細節(jié)。具有讀取、寫入、修改狀態(tài)的能力。
對應的代碼:
https://github.com/MarkPKCollier/NeuralTuringMachine
2.20 Bidirectional recurrent neural networks, bidirectional long / short term memory networks and bidirectional gated recurrent units (BiRNN, BiLSTM and BiGRU respectively)
雙向循環(huán)神經網絡、雙向長短期記憶網絡和雙向門控循環(huán)單元,把RNN、雙向的LSTM、GRU雙向,不再只是從左到右,而是既有從左到右又有從右到左。
對應的代碼:
BiRNN:https://github.com/cstghitpku/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/tree/master/models
BiLSTM:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiLSTM.py
BiGRU:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiGRU.py
2.21 Deep residual networks (DRN)
深度殘差網絡,是非常深的FFNN,它可以把信息從某一層傳至后面幾層(通常2-5層)。
對應的代碼:
https://github.com/KaimingHe/deep-residual-networks
2.22 Echo state networks (ESN)
回聲狀態(tài)網絡,是另一種不同類型的(循環(huán))網絡。
對應的代碼:
https://github.com/m-colombo/Tensorflow-EchoStateNetwork
2.23 Extreme learning machines (ELM)
極限學習機,本質上是隨機連接的FFNN。
對應的代碼:
https://github.com/dclambert/Python-ELM
2.24 Liquid state machines (LSM)
液態(tài)機,跟ESN類似,區(qū)別是用閾值激活函數(shù)取代了sigmoid激活函數(shù)。
對應的代碼:
https://github.com/kghose/Liquid
2.25 Support vector machines (SVM)
支持向量機,入門機器學習的人都知道,不解釋。
對應的代碼:
https://github.com/ajtulloch/svmpy
2.26 Kohonen networks (KN, also self organising (feature) map, SOM, SOFM)
Kohonen 網絡,也稱之為自組織(特征)映射。
對應的代碼KN/SOM:
https://github.com/mljs/som
后續(xù)建議
我個人感覺能力提升最快的方式是:先橫向學習一個領域,做到全面的認識;然后從頭到尾一項一項去突破,做到有深度。如果今天學點這個,明天學點那個,水平提升很慢,建議順著技術發(fā)展的主線從頭到尾學完。技術是無止境的,積累很重要,但有量遠遠不夠,還得講究方法。
對應到本文,學會并實現(xiàn)和優(yōu)化這些模型,遠遠不夠。我建議還可以有如下嘗試:
單層模型實現(xiàn)之后,試試多層或者模型stack;
試試模型的結合,比如LSTM/GRU+CNN/DCNN、CNN/DCNN+LSTM/GRU、LSTM/GRU+CRF等;
在一些模型上加attention(這里很多模型適合加);
利用這些模型解決一些比較簡單的小問題,比如用CNN識別數(shù)字、LSTM+CRF做NER等;
性能方面的提升,比如支持分布式訓練、支持GPU等;
把這些模型做成一個框架,到時候記得通知我,我一定拜讀。
-
神經網絡
+關注
關注
42文章
4762瀏覽量
100535 -
模型
+關注
關注
1文章
3171瀏覽量
48711 -
深度學習
+關注
關注
73文章
5492瀏覽量
120975
原文標題:上手!深度學習最常見的26個模型練習項目匯總
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論