我正在尝试使用坐骨神经网络框架学习神经网络,我了解神经网络的基本知识,现在尝试用scikit-learn来实现它。但我对两点感到困惑。
1-这个神经网络的结构是什么?不知怎么的,在我感觉到的一些例子中,有些人不把输入层作为一个层。否则,我认为这是因为一个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-坐骨神经网络在我上面写的代码中做反向传播吗?
谢谢!
发布于 2017-02-17 03:59:23
1-在scikit神经网络框架中,输入层不显示,但当我们向系统提供训练数据时,输入层作为一个层在后台显示。
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的答复:)
发布于 2017-02-08 11:36:32
X_train中的每个训练示例都有M个特性,并且在y_train中有C类:输入层(在代码中没有显式显示)有M个节点。隐藏层有100个节点。输出层有C节点(每个节点编码每个类的分数)。.fit()是一种方法,它提供训练示例并使用反向传播来训练神经网络。另外:也许您必须为最后一层添加units=C --我认为这是一个分类问题。如果您只需要一个值(一个分数,而不是一个类标签),那么使用Regressor。
https://stackoverflow.com/questions/42098700
复制相似问题