多层神经网络中的权重

时间:2015-10-14 08:37:28

标签: python machine-learning neural-network

我正在为我的研究开发一个多层神经网络。但是现在我处在一个修复中,用户应该定义他想要的隐藏层数和每层中的神经元数量。 我的输入是矩阵(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层和每层中的神经元数量创建权重?

2 个答案:

答案 0 :(得分:3)

我建议使用Pybrain模块轻松创建神经网络。他们的文档可以在这里找到:

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

权重将在您尝试的网络创建中随机初始化,并且可以更改隐藏神经元和隐藏层的数量。一个简单的2层隐藏层神经网络,每层有10个隐藏神经元:

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()

答案 1 :(得分:3)

如果你喜欢冒险并且需要使用GPU的一些计算能力。我推荐Keras Deep Learning Library。我也从PyBrain开始,但最终我转向更新的库,如Keras和Theano。 Keras非常容易学习,并且能够用很少的代码行重现某些结果状态。 Keras背后有一个非常活跃的社区开发最新功能,而PyBrain现在还没有积极开发。