多层神经网络中的权重

Weights in Multi Layer 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 层创建权重以及每层中的神经元数量?

我建议使用 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()

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