我正在尝试找出应用于列表的操作。我有列表/数组名称预测并执行以下指令集。
predictions[predictions < 1e-10] = 1e-10
此代码片段来自使用 Numpy 的 Udacity 机器学习作业。
它的使用方式如下:
def logprob(predictions, labels):
"""Log-probability of the true labels in a predicted batch."""
predictions[predictions < 1e-10] = 1e-10
return np.sum(np.multiply(labels, -np.log(predictions))) / labels.shape[0]
正如@MosesKoledoye 和其他人所指出的,它实际上是一个 Numpy 数组。 (Numpy 是一个 Python 库)
这条线是做什么的?
最佳答案
正如@MosesKoledoye 所指出的,predictions
很可能是 numpy
大批。
然后将使用 predictions < 1e-10
生成 bool 数组.在条件设置的 bool 数组为 True
的所有索引处, 该值将更改为 1e-10
, IE。 10-10.
例子:
>>> a = np.array([1,2,3,4,5]) #define array
>>> a < 3 #define boolean array through condition
array([ True, True, False, False, False], dtype=bool)
>>> a[a<3] #select elements using boolean array
array([1, 2])
>>> a[a<3] = -1 #change value of elements which fit condition
>>> a
array([-1, -1, 3, 4, 5])
在代码中这样做的原因可能是为了防止被零除或通过插入一个非常小的数字来防止负数弄乱事情。
关于Python 列表表示法,Numpy 数组表示法 : predictions[predictions < 1e-10] = 1e-10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38563377/