在Python中从简单算术中获取不正确的值
我正在按照一个教程对序列进行编码,我们必须制作一个简单的感知器来识别一个点是在直线上方还是下方 Perceptron类的构造函数使用在Python中从简单算术中获取不正确的值,python,Python,我正在按照一个教程对序列进行编码,我们必须制作一个简单的感知器来识别一个点是在直线上方还是下方 Perceptron类的构造函数使用numpy.random.uniform函数创建2个随机权重, 然后我们有一个猜测函数,它接受一个列表输入,其中包含点的(x,y)坐标 公式是 (w1*输入1)+(w2*输入2) 然后,我的符号函数使输出仅为1或-1 如果该公式的结果为=0,则输出为1,否则为-1 导入numpy #激活函数 def标志(n): 如果n
numpy.random.uniform
函数创建2个随机权重,
然后我们有一个猜测函数,它接受一个列表输入,其中包含点的(x,y)
坐标
公式是
(w1*输入1)+(w2*输入2)
然后,我的符号函数使输出仅为1或-1
如果该公式的结果为=0
,则输出为1,否则为-1
导入numpy
#激活函数
def标志(n):
如果n<0:
返回-1
其他:
返回1
类感知器:
定义初始化(自):
自重=[0.0,0.0]
#随机初始化权重
对于自重中的i:
#生成一个随机权重
#从-1到1
i=numpy.random.uniform(-1,1)
打印('权重:',i)
def猜测(自我,输入):
总和=0.0
对于范围内的i(len(自重)):
打印('输入:',输入[i])
打印('公式:',输入[i]*自身权重[i])
总和+=输入[i]*自权重[i]
打印('sum',sum)
输出=符号(和)
打印('输出:',输出)
返回输出
输入是硬编码的,用于测试输入=[-1,-0.5]
在以下输出中,公式应为:
总和=(0.6628487604118101*-1)+(0.44508063558107414*-0.5)
总和=-0.66284876041+-0.22254031779
总和=-0.8853890782
因此,因为它小于0,所以输出必须是-1
这是我尝试运行它时的输出,我使用了一些打印来解码程序,但我不知道为什么我总是得到1
$python main.py
重量:0.6628487604118101
重量:0.44508063558107414
输入:-1
公式:-0.0
总和0.0
输入:-0.5
公式:-0.0
总和0.0
产出:1
正如前面的评论所指出的,您的权重分配代码实际上并没有分配权重。当循环离开时,它们将丢失
此(可能不是很有效)代码段可能实现您想要实现的目标:
numWeights = 2
weights = []
for i in range(numWeights):
w = numpy.random.uniform(-1, 1)
weights.append(w)
print('weight:', w)
分配给循环变量不会分配给列表单元格。你的体重都是0。