python中for循环不是0的结果自动变成0?

python中for循环不是0的结果自动变成0?

我在计算正则化梯度时,公式没有错,但是从第2个位置以后都为0,于是我拿出来一个单独计算,发现并不是0,为什么在for循环中,python把不是0的数变成为0了。

相关代码

def RegGradient(theta,X,y,lam):

X=np.matrix(X)

y=np.matrix(y)

theta=np.matrix(theta)

theta_term=np.zeros(21)

theta_term[0]=np.mean(np.multiply((sigmoid(X*theta.T)-y),X[:,0]))

for i in np.arange(1,len(theta)):

theta_term[i]=np.mean(np.multiply((sigmoid(X*theta.T)-y),X[:,i]))+(lam/len(y))*theta[0,i]

return theta_term

python">theta_0=RegGradient(theta=np.zeros(21),X=X,y=y,lam=1)

theta_0

运行结果:array([0.00847458, 0.        , 0.        , 0.        , 0.        ,

0. , 0. , 0. , 0. , 0. ,

0. , 0. , 0. , 0. , 0. ,

0. , 0. , 0. , 0. , 0. ,

0. ])

拿出来计算

theta=np.zeros(21)

theta=np.matrix(theta)

X=np.matrix(X)

y=np.matrix(y)

lam=1

theta_term=np.zeros(21)

theta_term[0]=np.mean(np.multiply((sigmoid(X*theta.T)-y),X[:,0]))

theta_term[1]=np.mean(np.multiply((sigmoid(X*theta.T)-y),X[:,1]))+(lam/len(y))*theta[0,1]

theta_term[1]

结果:array([0.00847458, 0.01878809, 0.        , 0.        , 0.        ,

0. , 0. , 0. , 0. , 0. ,

0. , 0. , 0. , 0. , 0. ,

0. , 0. , 0. , 0. , 0. ,

0. ])

以上是 python中for循环不是0的结果自动变成0? 的全部内容, 来源链接: utcz.com/p/938417.html

回到顶部