Python scikit神经网络中的反向传播和神经网络结构

Python scikit神经网络中的反向传播和神经网络结构,python,machine-learning,scikit-learn,neural-network,deep-learning,Python,Machine Learning,Scikit Learn,Neural Network,Deep Learning,我正在尝试使用框架学习神经网络,我知道关于神经网络的基础知识,现在尝试使用scikit learn实现它。但我对两点感到困惑 1-下面给出的NN的结构是什么?不知何故,在我感觉到的一些例子中,有些人不把输入层作为一个层。否则,我认为这是一个2层的NN,输入层有100个节点,输出层有1个节点 from sknn.mlp import Classifier, Layer nn = Classifier( layers=[ Layer("Maxout", units

我正在尝试使用框架学习神经网络,我知道关于神经网络的基础知识,现在尝试使用scikit learn实现它。但我对两点感到困惑

1-下面给出的NN的结构是什么?不知何故,在我感觉到的一些例子中,有些人不把输入层作为一个层。否则,我认为这是一个2层的NN,输入层有100个节点,输出层有1个节点

from sknn.mlp import Classifier, Layer

nn = Classifier(
   layers=[
    Layer("Maxout", units=100, pieces=2),
    Layer("Softmax")],
learning_rate=0.001,
n_iter=25)

nn.fit(X_train, y_train)
2-scikit neuralnetwork是否在我上面提到的代码中进行反向传播

谢谢大家!

1。 假设
X\u列
中的每个训练示例都有M个特征,并且
y\u列
中有C类: 输入层(代码中未明确显示)有M个节点。隐藏层有100个节点。输出层有C个节点(每个节点编码每个类的分数)

二,。
.fit()
是一种实现这一点的方法-前馈训练示例并使用反向传播训练神经网络


另外:也许您必须为最后一层添加
units=C
——我假设这是一个分类问题。如果您只需要一个值(分数,而不是类别标签),则使用回归器

1-在scikit neuralnetwork框架中,输入层未显示,但当我们向系统提供训练数据时,它会在后台作为一个层进行渲染

nn.fit(X_train, y_train)
例如,假设我们使用的是iris flower数据集。它有3个类,所以如果是这样的话,框架可以从y_序列中理解这一点,并且它创建了3个包含3个类的输入层

y_train = [0,0,0,1,2,]
X_train = [[ 7.1  3.   5.9  2.1]
           [ 5.9  3.   4.2  1.5]
           [ 5.5  2.4  3.7  1. ]
           [ 6.1  2.8  4.7  1.2]
           [ 5.   2.3  3.3  1. ]]
除最后一层外,所有其他层都是隐藏层。当我操作最后一层时,我看到了这个错误

    nn = Classifier(
    layers=[
            Layer("Maxout", units=100, pieces=2),
            Layer("Softmax",units=1)],   -----> if units is 3 that's ok!
            learning_rate=0.001,
            n_iter=25)
    "Mismatch between dataset size and units in output layer."
    AssertionError: Mismatch between dataset size and units in output layer.
2-更详细的解释;感谢datascience.stackexchange上的@robintibor。他在这里解释了这两个问题


也感谢@user7534232的回答:)

我正试图在iris flower数据集上实现这一点。此代码中的输出层是右侧的
层(“Softmax”)
?如果这是我的理解,我需要添加单位到最后一层就足够了吗<代码>图层(“Softmax”,单位=3)再想想,我不确定
units=3
:(据sknn文档中的原始示例所述,可能没有必要。我很久没有使用sknn了,现在无法回忆。请先尝试不使用它,然后打印属性
classes\uuu
,检查网络是否正确识别数据集中的所有类。谢谢您的帮助!@user7534232完成后:您可以编写这是对你有用的东西,这样其他有同样问题的人也可以参考。我还没有实现这一点,但可以肯定的是,每当我确定答案时,我都会发布它:)再次感谢你