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