簡體   English   中英

計算成本函數和正則邏輯回歸的梯度時面臨的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM