我具有以下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个元素组成的数组?
答案 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)
数组所具有的。