[英]Coursera ML - Implementing regularized logistic regression cost function in python
[英]Facing issues in computing cost function and gradient of regularized logistic regression
我正在Coursera的Andrew Ng的機器學習課程中進行第4周的作業。 我應該計算成本函數和正則邏輯回歸的梯度。 這是我寫的:
function [J, grad] = lrCostFunction(theta, X, y, lambda)
m = length(y); % number of training examples
J = 0;
grad = zeros(size(theta));
n=length(theta);
thetat=theta';
t=thetat(:,[2:n]);
t=t';
J = (-1/m*(sum((log(sigmoid(X*theta)))'*y)+((log(1-sigmoid(X*theta)))'*(1-y))))+((lambda/(2*m))*(sum(t.^2)));
grad=(1/m)*(X'*(sigmoid(X*theta)-y))+((lambda/m)*theta);
grad(1)=(1/m)*(sum(sigmoid(X*theta)-y));
end
我收到此錯誤:
!! Submission failed: operator *: nonconformant arguments (op1 is 16x3, op2 is 4x3)
Function: lrCostFunction
FileName: c:\users\syed\desktop\machine-learning-ex3\ex3\lrCostFunction.m
LineNumber: 19
Please correct your code and resubmit.
我無法理解我哪里出了問題,因為在第3周我遇到了類似的問題,我必須計算成本函數和梯度,並且上面的代碼可以正常工作。
您正在執行第19行的16x3矩陣與4x3矩陣的內積,因為錯誤本身就說明了。 轉置第二個矩陣,此錯誤將消失。
當您想做內積時,第一矩陣/向量的第二維應與第二矩陣/向量的第一維匹配。
您在計算成本時有一些錯誤,它是元素明智的乘積,請使用.*
代替*
,並且您的括號格式也是錯誤的,將其與此進行比較,看看是否有任何錯誤:
-1/m * sum( ( y .* log(y^) ) + ( (1-y) .* (log(1-y^)) ) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.