Numpy在什么情况下会回归"除以零错误"?

时间:2015-02-16 05:08:25

标签: python numpy zero divide

我有一个如下表达式,其中数据是一个矩阵,而 theta 是一个向量,python不断提高除以0的错误。 但唯一的分母是(1 + e ^ x),这个矩阵中的每个元素都不能为0

np.sum(-data[:,-1]*np.log(1.0/(1.0+np.exp(-np.dot(data[:,:-1],theta.transpose())))))

是否有任何我忽略的情况会产生此错误?

奇怪的是,程序运行良好,即使每次都显示此错误,结果也是正确的。

1 个答案:

答案 0 :(得分:0)

从评论中给出的错误消息到问题:

py:21: RuntimeWarning: divide by zero encountered in log return (np.sum(-data[:,-1]*np.log(1.0/(1.0+np.exp(-np.dot(data[:,:-1],theta.transpose()‌​))))-(1-data[:,-1])*np.log(1-1.0/(1.0+np.exp(-np.dot(data[:,:-1],theta.transpose(‌​))))))+np.sum(theta[1:]**2)*lamda/2.0)*1.0/data.shape[0]

您似乎在计算np.log(0)。 E.g。

>>> import numpy as np
>>> np.log(0)
__main__:1: RuntimeWarning: divide by zero encountered in log
-inf
>>>

这可能发生,因为np.exp(...)溢出,或1.0 + np.exp(...)返回1.0(因为np.exp(...)小于“机器epsilon”)并且您正在计算{{1} }。