gpt4 book ai didi

python - 通过梯度下降学习或门

转载 作者:行者123 更新时间:2023-11-30 09:11:05 25 4
gpt4 key购买 nike

我正在尝试让我的程序使用神经网络和梯度下降算法学习或逻辑门。我将额外的输入神经元设置为 -1,以便我可以调整神经元的阈值以供稍后激活。目前阈值只是0。这是我的实现尝试

#!/usr/bin/env python
from numpy import *
def pcntrain(inp, tar, wei, eta):
for data in range(nData):
activation = dot(inp,wei)
wei += eta*(dot(transpose(inp), target-activation))
print "ITERATION " + str(data)
print wei
print "TESTING LEARNED ALGO"
# Sample input
activation = dot(array([[0,0,-1],[1,0,-1],[1,1,-1],[0,0,-1]]),wei)
print activation
nIn = 2
nOut = 1
nData = 4
inputs = array([[0,0],[0,1],[1,0],[1,1]])
target = array([[0],[1],[1],[1]])
inputs = concatenate((inputs,-ones((nData,1))),axis=1) #add bias input = -1
weights = random.rand(nIn +1,nOut)*0.1-0.05 #random weight
if __name__ == '__main__':
pcntrain(inputs, target, weights, 0.25)

这段代码似乎产生的输出看起来不像或门。帮忙?

最佳答案

好吧,这一个或门,如果您将测试数据更正为

activation = dot(array([[0,0,-1],[1,0,-1],[1,1,-1],[0,1,-1]]),wei)

(你的代码有两次 0,0,从来没有 0,1)它产生

[[ 0.30021868]
[ 0.67476151]
[ 1.0276208 ]
[ 0.65307797]]

调用回合后给出

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

根据需要。

但是,您确实有一些小错误:

  • 您正在运行 4 次梯度下降迭代(主循环),此外,它来自于您使用输入数量来指定这一事实 - 这是不正确的,“合理”迭代次数与数字之间没有关系点。如果您运行 100 次迭代,您最终会得到更接近的分数

.

[[ 0.25000001]
[ 0.75 ]
[ 1.24999999]
[ 0.75 ]]
  • 你的模型是线性的并且具有线性输出,因此你不能期望它精确地输出0和1,上面的结果(0.25、0.75和1.25)实际上是此类模型模型的最优解。如果你希望它收敛到良好的 0/1,你需要输出中的 sigmoid 以及不同的损失/导数(这仍然是 ML 意义上的线性模型,你只需在输出上有一个压缩函数即可使其正确工作空间)。
  • 您没有在函数中使用“tar”参数,而是引用全局变量“target”(它们具有相同的值,但这是一个明显的错误)

关于python - 通过梯度下降学习或门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38014053/

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