我在尝试将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)
其中np
是 NumPy 导入包的名称。由于XOR逻辑使用的是0&1和1,因此逻辑函数应该是适当的激活函数。尽管如此,我得到的结果在所有情况下都接近0.5,即0和1的任何输入组合产生接近0.5的值。我所说的是否有任何错误?
请不要犹豫,要求我提供更多背景信息或更多代码。提前谢谢。
答案 0 :(得分:1)
我和你有同样的问题。 当数据不能被线性超平面划分时,就会出现问题。 尝试训练数据:
X = [[-1,0],[0,1],[1,0],[0,-1]]
Y = [1,0,1,0]
如果你在坐标上绘制它,那么你会很好,它不是线性可分割的。 在物流上训练它,参数都接近0,结果接近0.5。
另一个线性可分的例子是使用Y = [1,1,0,0]
和后勤工作。