- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习神经网络,并编写了一个简单的反向传播神经网络,该网络使用 sigmoid 激活函数和随机权重初始化。我尝试与输入层中的两个输入值 3 和 2 以及输出层中的目标输出 6 相乘。当我执行代码时,w1
和 w2
的值不断增加,并且不会停止在正确的值。
我对 Python 和神经网络都很陌生,希望得到帮助。
import numpy as np
al0 = 3
bl0 = 2
import random
w1 =random.random()
w2 =random.random()
b = 0.234
ol1 = 6
def sigm(x,deriv=False):
if deriv==True:
return x*(1-x)
return 1/(1+np.exp(-x))
y = sigm(x)
E = 1/2*(ol1 - y)**2
dsig = sigm(x,True)
dyE = y-ol1
for iter in range(10000):
syn0 = al0*w1
syn1 = bl0*w2
x = syn0 + syn1 + b
dtotal1 = dyE*dsig*al0
w1 = w1 + 0.01*dtotal1
dtotal2 = dyE*dsig*bl0
w2 = w2 + 0.01*dtotal2
w1
w2
最佳答案
首先您需要整理代码。这些行
y = sigm(x)
E = 1/2*(ol1 - y)**2
dsig = sigm(x,True)
dyE = y-ol1
需要在 for 循环内发生,在 x = syn0 + syn1 + b
之后。
接下来,有一些神经网络项目需要解决。 Here是反向传播的技术描述。
sigm(x)
的导数是 sigm(x) * (1 - sigm(x))
,或者在您的情况下,y * ( 1 - y)
,正如您所实现的那样,它是 sigm(y,True)
。
您的偏见也需要更新。这是网络的关键部分,也是一个学习参数。您可以使用:
dtotalb = dyE*dsig*1
b = b - 0.01*dtotalb
乘以 1 是不必要的,但很有启发性。这是“net”术语的派生词,您将其称为 x
,相对于 b
,即 1。
您可能已经注意到,我为 b 提供的更新使用了 -
而不是 +
。 this section的最后一行上面的链接显示这是必要的,以确保更新朝着正确的方向进行,以最大限度地减少您的错误。
最后,考虑您的网络可以输出的可能值。最终输出y
是调用sigm(x)
的结果。 y
可以取的值在开区间 (0,1) 内。然而,您的网络正在尝试学习 6 的值。它能得到的最接近的值几乎是 1。因此,当您继续迭代时,权重将继续增加,以尝试增加 sigmoid 的输出值。权重将无限增长。
通过所有这些更改,尝试将您的目标设置为 (0,1) 中的某个值,例如0.6。当我进行所有这些更改时,我能够使 E
减小到接近 0,并且您的权重收敛。
旁注:为了让您的网络学习值 6,您将需要另一层没有激活函数的权重。或者,您可以删除激活函数,但随后您开始失去您正在尝试学习的神经网络方法。
关于Python简单的神经网络代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51882681/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!