1

我在尝试教神经网络 XOR 逻辑功能时遇到了麻烦。我已经使用双曲正切和 ReLU 作为激活函数对网络进行了成功的训练(关于 ReLU,我知道它不适合这类问题,但我仍然想测试它)。尽管如此,我还是不能让它与logistic function一起工作。我对函数的定义是:

def logistic(data):
    return 1.0 / (1.0 + np.exp(-data))

及其衍生物:

def logistic_prime(data):
    output = logistic(data)
    return output * (1.0 - output)

NumPy导入包np的名称在哪里。由于 XOR 逻辑使用的是 0 和 1,因此逻辑函数应该是适当的激活函数。尽管如此,我得到的结果在所有情况下都接近 0.5,即 0 和 1 的任何输入组合都会产生接近 0.5 的值。我说的有什么错误吗?

不要犹豫,向我询问更多上下文或更多代码。提前致谢。

4

1 回答 1

1

我和你有同样的问题。当数据不能被线性超平面划分时,就会出现问题。尝试训练数据:

X = [[-1,0],[0,1],[1,0],[0,-1]]
Y = [1,0,1,0]

如果你把它画在一个坐标上,那么你就可以了,它不是线性可分的。在逻辑上训练它,参数都接近 0,结果接近 0.5。

另一个线性可分的例子是使用Y = [1,1,0,0] 和后勤工作。

于 2017-08-03T06:22:18.533 回答