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



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

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神经网络是否在我上面输入的代码中进行反向传播?

谢谢!

1.假设X_train中的每个训练示例都有 M 个特征,并且y_train中有 C 类:输入层(未在代码中显式显示(具有 M 个节点。隐藏层有 100 个节点。输出层具有 C 节点(每个节点对每个类的分数进行编码(。

阿拉伯数字。 .fit() 是一种做到这一点的方法 - 前馈训练示例并使用反向传播来训练 NN。

另外:也许您必须为最后一层添加units=C - 我认为这是一个分类问题。如果只需要一个值(分数,而不是类标签(,请使用 Regressor

1- 在

scikit-neuralnetwork框架中,输入层没有显示,但是当我们向系统提供训练数据时,它作为层在后台存储。

nn.fit(X_train, y_train)

例如,假设我们正在使用鸢尾花数据集。它有 3 个类,所以如果是这种情况,框架从y_train理解这一点,它会创建 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的回答:)

相关内容

  • 没有找到相关文章

最新更新