2015-10-14 128 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现在并未处于积极的发展阶段。