【发布时间】:2020-03-09 09:46:19
【问题描述】:
通过感知学习,我对初始化和更新权重感到很困惑。如果我有一个包含 2 个输入 x0 和 x1 的样本数据,并且我有这 2 个输入的 80 行,因此是 80x2 矩阵。
我需要将权重初始化为 80x2 的矩阵还是仅需要 2 个值 w0 和 w1 ?感知器学习的最终目标是找到适合所有 80 个输入样本行的 2 个权重 w0 和 w1 吗?
我有以下代码,尽管迭代次数高达 10,000 次,但我的错误从未达到 0。
x=input matrix of 80x2
y=output matrix of 80x1
n = number of iterations
w=[0.1,0.1]
learningRate = 0.1
for i in range(n):
expectedT = y.transpose();
xT = x.transpose()
prediction = np.dot (w,xT)
for i in range (len(x)):
if prediction[i] >= 0:
ypred[i] = 1
else:
ypred[i] = 0
error = expectedT - ypred
# updating the weights
w = np.add(w,learningRate*(np.dot(error,x)))
globalError = globalError + np.square(error)
【问题讨论】:
-
您有 80 个样本和 2 个特征。如果您使用单层感知器,您将针对每个特征训练一个权重。因此,您只需要 2 个权重。但是引入具有其他权重的偏置层也很常见。因此,您将使用 3 个权重。此外,您的错误可能永远不会达到 0,因为例如单层感知器无法解决 xor。
-
@mjspier 感谢您确认重量。在我共享的代码中,如果在一次迭代中没有错误,我是否需要在下一次迭代中忽略该示例行?
标签: machine-learning neural-network artificial-intelligence perceptron