grad2_reg =grad2 +(Lambda/m) *np.hstack((np.zeros((Theta2.shape[0],1)),Theta2[:,1:]))为什么还要加上np.hstack((np.zeros((Theta2.shape[0],1))
时间: 2023-12-03 08:03:05 浏览: 65
conjugate_grad_2d.rar_grad matl_grad matl_约束 条件 线性 规划_约束条件代码
这个操作是为了实现L2正则化(也叫岭回归),目的是防止模型过拟合。np.hstack((np.zeros((Theta2.shape[0],1)),Theta2[:,1:])) 是用来将 Theta2 的第一列全部置零,然后将其余列与 grad2 相加。这样做是因为在正则化时,我们不希望惩罚常数项(也就是偏置项),因为偏置项通常对模型的预测结果影响较小,而且惩罚偏置项可能会导致模型的拟合能力下降。因此,我们将 Theta2 的第一列(即偏置项)置零,再与 grad2 相加即可实现对 Theta2 中除了偏置项以外的所有参数进行 L2 正则化。
阅读全文