MLP分类器神经元权重

时间:2018-06-19 22:12:07

标签: python neural-network classification

我具有以下MLP神经网络:

MLP = MLPClassifier(activation= 'tanh', alpha= 1e-05, hidden_layer_sizes= (2, 3), learning_rate= 'constant' , max_iter= 5000)
MLP.fit(X_train,y_train)

print(MLP.coefs_)

据我了解,这个神经网络只有2个隐藏层,第一个隐藏层有2个神经元,第二个隐藏层有3个神经元。但是,上面的输出到打印系数给出以下内容:

[array([[-0.15020109,  0.29242019],
       [ 0.38515555,  0.06000627],
       [-0.04371792,  0.35203079],
       [ 0.28167529,  0.05948562],
       [-0.46051132, -0.28546222]]), array([[-0.29658042, -1.2229539 ,  0.4949065 ],
       [-0.95435436,  0.3854664 ,  0.6349616 ]]), array([[-0.54332547,  0.27007792,  0.68899707],
       [-0.00191208,  0.89295531, -0.22855791],
       [-0.58939234,  0.39217616,  1.10214481]])]

我的问题是如何将以上输出映射到隐藏层中的每个神经元。乍看之下,似乎第一隐藏层中第一神经元的权重为:[-0.29658042,-1.2229539、0.4949065]。一个神经元的权重如何才能由3个元素组成的数组?

1 个答案:

答案 0 :(得分:0)

您还需要考虑输入层和输出层。您似乎正在输入5维特征并输出3维输出。您的网络有2个大小分别为2和3的隐藏层。因此coefs_的形状应为(5,2),(2,3),(3,3),以便您的输入从5维变为2维,然后从2-dim到3-dim,然后从3-dim到3-dim作为输出。请记住,从一层到另一层的每个连接都有权重。因此,如果您有5个神经元(输入层)连接到2个神经元(第一个隐藏层),则需要5*2=10权重来描述这两层之间的10个连接。这正是形状(5,2)数组所具有的。