没有矩阵转置的向量化梯度下降
Vectorise gradient descent without matrix transpose
我在下面使用矩阵转置进行逻辑回归的矢量化形式的梯度下降写在下面,它工作正常
%grad(1) = (1/m)*X(:,1)'*(h-y);
%grad(2:end) = (1/m)*(X(:,2:end)'*(h-y)) + (lambda/m)*theta(2:end);
但是当我尝试在没有矩阵转置的情况下使用它时,只有当我将 + (lambda/m)*theta(2:end)
添加到 grad(2:end)
时它才会给出矩阵运算错误
%grad(1) = (1/m)*sum((h-y).*X(:,1));
%grad(2:end) = ((1/m)*sum((h-y).*X(:,2:end))) + (lambda/m)*theta(2:end);
其实我现在想通了应该是
grad(2:end) = (1/m)*sum((h-y).*X(:,2:end))' + (lambda/m)*theta(2:end) ;
我在下面使用矩阵转置进行逻辑回归的矢量化形式的梯度下降写在下面,它工作正常
%grad(1) = (1/m)*X(:,1)'*(h-y);
%grad(2:end) = (1/m)*(X(:,2:end)'*(h-y)) + (lambda/m)*theta(2:end);
但是当我尝试在没有矩阵转置的情况下使用它时,只有当我将 + (lambda/m)*theta(2:end)
添加到 grad(2:end)
%grad(1) = (1/m)*sum((h-y).*X(:,1));
%grad(2:end) = ((1/m)*sum((h-y).*X(:,2:end))) + (lambda/m)*theta(2:end);
其实我现在想通了应该是
grad(2:end) = (1/m)*sum((h-y).*X(:,2:end))' + (lambda/m)*theta(2:end) ;