gpt4 book ai didi

Python 简单的反向传播没有按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 09:31:01 24 4
gpt4 key购买 nike

我正在尝试实现反向传播算法,以展示如何使用两层神经网络来充当 XOR 逻辑门。我遵循了本教程 here .

运行后,我希望输出遵循 XOR逻辑真值表:

[[0]
[1]
[1]
[0]]

但是我得到:

output after training:  [[0.5]
[0.5]
[0.5]
[0.5]]

对我可能做错了什么有什么建议吗?谢谢


完整代码:

import numpy as np


# Sigmoid function
def sigmoid(x, deriv=False):
if deriv:
return x*(1-x)
return 1/(1+np.exp(-x))


# Input dataset
X = np.array([[0, 0],
[0, 1],
[1, 0],
[1, 1]])

# Output dataset
y = np.array([[0, 1, 1, 0]]).T

# seed random numbers to make calculation deterministic
np.random.seed(1)

# initialise weights randomly with mean 0
syn0 = 2*np.random.random((2, 1)) - 1

for iter in range(10000):

# forward prop
layer0 = X
layer1 = sigmoid(np.dot(layer0, syn0))

layer1_error = y - layer1

layer1_delta = layer1_error * sigmoid(layer1, True)

syn0 += np.dot(layer0.T, layer1_delta)
print(iter)

print("output after training: ", layer1)

最佳答案

您没有做错任何事 - 您已正确证明单层 ANN 无法执行 non-linear separation !

XOR 输入是不可线性分离的数据示例 - 简单地说,如果您将它们绘制在 x-y 网格上,则无法绘制一条直线来将“0”输出与“1”输出分开。单层人工神经网络只能进行线性分离,无论怎么训练都无法产生正确的输出。

要解决异或问题,您需要添加一个额外的层。看起来你已经有两层(输入层和输出层),但它实际上是一个单层网络,因为只有一层权重(syn0)。添加第二层(按照您提供的引用中的示例)并查看训练结果是否有所改善。

关于Python 简单的反向传播没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55744409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com