感知器算法混淆
Perceptron Algorithm Confusion
我正试图解决这个问题:
def phi(x):
# DO NOTHING ON THIS FUNCTION
if x<=0:
return -1.0
else:
return 1.0
phi = np.vectorize(phi)
这里是我需要实现的功能:
def predictOne(x, w):
z =
return phi(z)
但是当我尝试使用我的公式但输入代码时:
def predictOne(x, w):
z = 0 + x * w
return phi(z)
并且运行我的断言:
assert predictOne(np.array([0.0,0.0]) , np.array([0.1,3.2,7.4])) == 1.0
assert predictOne(np.array([0.0,0.0]), np.array([-0.1,3.2,7.4])) == -1.0
assert predictOne(np.array([0.3,-0.7]), np.array([0.1,3.2,7.4])) == -1.0
assert predictOne(np.array([0.3,0.7]), np.array([0.1,3.2,7.4])) == 1.0
我得到一个(操作数无法与形状一起广播 (2,) (3,)
显然,断言是正确的,所以我在我的 predictOne 函数中做错了。有人可以帮忙吗?
问题出在公式中:
def predictOne(x, w):
z = w[0] + np.sum(x * w[1:])
return phi(z)
w[0]
是偏差。正如@mkrieger 指出的那样,零偏差没有多大意义。
- 感知器本质上是计算输入的加权和,所以结果应该是相加的。
我正试图解决这个问题:
def phi(x):
# DO NOTHING ON THIS FUNCTION
if x<=0:
return -1.0
else:
return 1.0
phi = np.vectorize(phi)
这里是我需要实现的功能:
def predictOne(x, w):
z =
return phi(z)
但是当我尝试使用我的公式但输入代码时:
def predictOne(x, w):
z = 0 + x * w
return phi(z)
并且运行我的断言:
assert predictOne(np.array([0.0,0.0]) , np.array([0.1,3.2,7.4])) == 1.0
assert predictOne(np.array([0.0,0.0]), np.array([-0.1,3.2,7.4])) == -1.0
assert predictOne(np.array([0.3,-0.7]), np.array([0.1,3.2,7.4])) == -1.0
assert predictOne(np.array([0.3,0.7]), np.array([0.1,3.2,7.4])) == 1.0
我得到一个(操作数无法与形状一起广播 (2,) (3,)
显然,断言是正确的,所以我在我的 predictOne 函数中做错了。有人可以帮忙吗?
问题出在公式中:
def predictOne(x, w):
z = w[0] + np.sum(x * w[1:])
return phi(z)
w[0]
是偏差。正如@mkrieger 指出的那样,零偏差没有多大意义。- 感知器本质上是计算输入的加权和,所以结果应该是相加的。