【发布时间】:2016-07-05 12:58:25
【问题描述】:
因为 MLP 可以实现任何功能。我有以下代码,我正在尝试使用它来实现 AND 函数。但是我发现在多次运行该程序时,我最终会得到不同的预测值。为什么会这样?另外,如何确定必须在不同层提供哪种类型的激活函数?
from sknn.mlp import Regressor,Layer,Classifier
import numpy as np
X_train = np.array([[0,0],[0,1],[1,0],[1,1]])
y_train = np.array([0,0,0,1])
nn = Classifier(layers=[Layer("Softmax", units=2),Layer("Linear", units=2)],learning_rate=0.001,n_iter=25)
nn.fit(X_train, y_train)
X_example = np.array([[0,0],[0,1],[1,0],[1,1]])
y_example = nn.predict(X_example)
print (y_example)
【问题讨论】:
-
对于分类通常是使用的标量积,对于您的问题,您恰好需要 1 个神经元。层决定了可以分类的区域。 1层半平面,2层凸区域,每个区域3层
-
我得到不同的预测怎么办?
-
很可能是因为起始权重是随机生成的。您可能应该探索如何为您想要的一致性设置随机种子。
-
我该怎么做才能在简单 AND 函数的训练数据上测试我的模型时获得 100% 的准确率?
标签: python machine-learning scikit-learn neural-network