Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning scikit神经网络数据集大小不匹配错误_Machine Learning_Scikit Learn_Neural Network - Fatal编程技术网

Machine learning scikit神经网络数据集大小不匹配错误

Machine learning scikit神经网络数据集大小不匹配错误,machine-learning,scikit-learn,neural-network,Machine Learning,Scikit Learn,Neural Network,我正在尝试使用sknn.MLP为XOR问题训练一个MLP分类器 from sknn.mlp import Classifier, Layer X=numpy.array([[0,1],[0,0],[1,0]]) print X.shape y=numpy.array([[1],[0],[1]]) print y.shape nn=Classifier(layers=[Layer("Sigmoid",units=2),Layer("Sigmoid",units=1)],n_iter=100) nn

我正在尝试使用sknn.MLP为XOR问题训练一个MLP分类器

from sknn.mlp import Classifier, Layer
X=numpy.array([[0,1],[0,0],[1,0]])
print X.shape
y=numpy.array([[1],[0],[1]])
print y.shape
nn=Classifier(layers=[Layer("Sigmoid",units=2),Layer("Sigmoid",units=1)],n_iter=100)
nn.fit(X,y)
这导致:

No handlers could be found for logger "sknn"
Traceback (most recent call last):
File "xorclassifier.py", line 10, in <module>
nn.fit(X,y)
File "/usr/local/lib/python2.7/site-packages/sknn/mlp.py", line 343, in fit
return super(Classifier, self)._fit(X, yp)
File "/usr/local/lib/python2.7/site-packages/sknn/mlp.py", line 179, in _fit
X, y = self._initialize(X, y)
File "/usr/local/lib/python2.7/site-packages/sknn/mlp.py", line 37, in _initialize
self._create_specs(X, y)
File "/usr/local/lib/python2.7/site-packages/sknn/mlp.py", line 64, in _create_specs
"Mismatch between dataset size and units in output layer."
AssertionError: Mismatch between dataset size and units in output layer.
找不到记录器“sknn”的处理程序
回溯(最近一次呼叫最后一次):
文件“xorclassifier.py”,第10行,在
nn.拟合(X,y)
文件“/usr/local/lib/python2.7/site-packages/sknn/mlp.py”,第343行,适合
返回超级(分类器,自).\u拟合(X,yp)
文件“/usr/local/lib/python2.7/site packages/sknn/mlp.py”,第179行,格式为
十、 y=自初始化(X,y)
文件“/usr/local/lib/python2.7/site packages/sknn/mlp.py”,第37行,在
自行创建规格(X,y)
文件“/usr/local/lib/python2.7/site packages/sknn/mlp.py”,第64行,在创建规范中
“数据集大小与输出层中的单位不匹配。”
AssertionError:数据集大小和输出层中的单位不匹配。

Scikit似乎将您的
y
向量转换为一个形状的二进制向量(n_样本,n_类)。n_类在您的案例中是第二类。所以试试看

nn=Classifier(layers=[Layer("Sigmoid",units=2),Layer("Sigmoid",units=2)],n_iter=100)

嘿,成功了。但我真的不明白为什么。是因为我有两个类,所以在输出层需要两个单元吗?为什么我不能使用相同的单位0或1作为两个不同的类?理论上这应该是可行的。他们似乎就是这样实施的。“我想这是为了避免对两个类有额外的条件。”托马斯我混淆了NN的结构。这个神经网络的结构是什么?是否输入(2个节点)->隐藏(2个节点)->输出(2个节点)?或输入(2个节点)->输出(2个节点)。