我正在尝试使用2D输入向量(x1,x2)用单个感知器训练一个非常简单的神经网络。
我已经实现了以下我认为正确的反向传播。使用返回的权重向量,我得到一条直线,该直线离数据的决策边界不远。
def train_nn(self, training_set, labels):
for _ in range(self.epochs):
preds = np.dot(self.weights.T, training_set.T)
z = sigmoid(preds)
error = z - labels
#back propogation - find derivative with respect to weights
derror_dy = error
dy_dz = sigmoid_deriv(preds)
derr_dz = derror_dy * dy_dz
derr_dweights = np.dot(training_set.T, derr_dz.T)
dz_dweights = self.lr * derr_dweights
self.weights -= dz_dweights
return self.weights
使用权重运行预测时,我得到的分类正确。
使用Sigmoid函数是否会导致边界不正确?还是我的反向传播计算中有错误?感谢任何帮助!