线性回归梯度下降算法中:w·x用点积还是普通乘法?
线性回归梯度下降中
np.dot(w,x)与w*x的选择 公式里的𝑤⋅𝑥确实是点积运算,具体用哪段代码得看你的w和x的维度:
单特征单样本场景:
w和x都是标量时,np.dot(w,x)和w * x结果完全一样,随便用哪个都行。多特征单样本场景:
必须用np.dot(w, x)。比如w = [1,2]、x = [3,4],np.dot(w,x)会计算1*3 + 2*4 = 11,这才是公式里的点积结果;而w * x是逐元素相乘得到[3,8],完全不符合需求。多样本场景:
如果x是(样本数, 特征数)的数组,w是(特征数,)的权重向量,想要一次性算出所有样本的w⋅x,得用np.dot(x, w)(注意顺序,点积后得到每个样本对应的标量值数组);而w * x会做广播逐元素相乘,得到的是和x同形状的数组,不是我们要的预测前置值。
总的来说,除了单特征单样本的特殊情况,其他场景都得用np.dot()来实现点积;哪怕单特征场景,优先用np.dot()也能让代码更具扩展性,后续加特征不用改这段逻辑。
内容的提问来源于stack exchange,提问作者soccergirlylegends9
相关产品推荐
相关产品推荐

