我需要一些帮助来弄清楚一些术语,因为它适用于感知器的输入。一个名为“更新”的函数,“接受一个二维数组 @param 值,该值由一个输入列表和一个一维数组 @param 序列组成,由相应的预期输出列表组成”
在下面的代码中,“values[datapoint]”对输入指的是什么:
np.array([[3,2,1],[4,0,-1]])..."
在最后一个名为“test()”的函数中的代码中查看下面这段代码的完整上下文,它基本上以“p2.updat ...”开头,它使用这个数组调用函数“update()”作为输入。
“数据点”是否等于“[3,2,1]”还是仅指该数组的一个元素,如“3”?
import numpy as np
class Perceptron:
def __init__(self, weights = np.array([1]), threshold = 0):
self.weights = weights.astype(float)
self.threshold = threshold
def activate(self, values):
strength = np.dot(values,self.weights)
return int(strength > self.threshold)
def update(self, values, train, eta=.1):
for data_point in xrange(len(values)):
prediction = self.activate(values[data_point])
error = train[data_point] - prediction
weight_update = eta * np.dot(values[data_point], error)
self.weights += weight_update
def test():
def sum_almost_equal(array1, array2, tol = 1e-6):
return sum(abs(array1 - array2)) < tol
p1 = Perceptron(np.array([1,1,1]),0)
p1.update(np.array([[2,0,-3]]), np.array([1]))
assert sum_almost_equal(p1.weights, np.array([1.2, 1, 0.7]))
p2 = Perceptron(np.array([1,2,3]),0)
p2.update(np.array([[3,2,1],[4,0,-1]]),np.array([0,0]))
assert sum_almost_equal(p2.weights, np.array([0.7, 1.8, 2.9]))
p3 = Perceptron(np.array([3,0,2]),0)
p3.update(np.array([[2,-2,4],[-1,-3,2],[0,2,1]]),np.array([0,1,0]))
assert sum_almost_equal(p3.weights, np.array([2.7, -0.3, 1.7]))
if __name__ == "__main__":
test()
谢谢。