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