2015-10-14 126 views
1

我正在爲我的研究開發一個多層神經網絡。但是現在我正處於修復中,用戶應該定義他想要的隱藏層數和每層中的神經元數量。 我的輸入是矩陣(x,8),我的實際輸出是矩陣(x,2),其中x是我樣本數據中的行數。多層神經網絡中的權重

我通常定義我權重

Weights1 = 2 * np.random.random((Hidden_layer_len,X[0].shape[0])) - 1 
Weights2 = 2 * np.random.random((T[0].shape[0],Hidden_layer_len)) - 1 
W = [Weights1, Weights2] 

,其中X是所述輸入,T是從樣本數據表的輸出和Hidden_​​layer_len是隱藏層的長度,假設有我的輸入之間的一個隱藏層並輸出。

現在,我的要求是,用戶可以在輸入和輸出之間提供他想要的隱藏層的數量,用戶還可以定義每層的神經元數量(hidden_​​layer_len)。

假設有n層,我如何爲n層創建我的權重以及每層中的神經元數量?

回答

3

我會推薦使用Pybrain模塊來輕鬆創建神經網絡。他們的文檔可以在這裏找到:

http://pybrain.org/docs/tutorial/netmodcon.html

的重量會隨機在網絡創作爲你正在嘗試做初始化,並且隱藏神經元和隱藏層的量是可以改變的。每層例如10元隱藏一個簡單的2個隱藏層神經網絡:

from pybrain.structure import FeedForwardNetwork 
n = FeedForwardNetwork() 

from pybrain.structure import LinearLayer, SigmoidLayer 
inLayer = LinearLayer(8) 
hiddenLayer = SigmoidLayer(10) 
hiddenLayer2 = SigmoidLayer(10) 
outLayer = LinearLayer(2) 

n.addInputModule(inLayer) 
n.addModule(hiddenLayer) 
n.addModule(hiddenLayer2) 
n.addOutputModule(outLayer) 

from pybrain.structure import FullConnection 
in_to_hidden = FullConnection(inLayer, hiddenLayer1) 
hidden_to_hidden = FullConnection(hiddenLayer1, hiddenLayer2) 
hidden_to_out = FullConnection(hiddenLayer2, outLayer) 

n.addConnection(in_to_hidden) 
n.addConnection(hidden_to_hidden) 
n.addConnection(hidden_to_out) 

n.sortModules() 
+0

哇。這正是我想要的。謝謝你:) –

+0

沒問題:)我幾個月前開始研究RNN,發現Pybrain爲我節省了很多時間。 –

3

如果你喜歡冒險,並使用GPU需要一些計算能力。我建議Keras Deep Learning Library。我也從PyBrain開始,但最終我轉向更新更新的庫,如Keras和Theano。 Keras非常容易學習,它能夠以很少的代碼行重現結果的某些狀態。在Keras開發最新功能的背後有一個非常活躍的社區,而PyBrain現在並未處於積極的發展階段。