我试图找出列表上应用的操作。我有列表/数组名称预测,并执行以下一组指令。
predictions[predictions < 1e-10] = 1e-10
此代码段来自使用Numpy的Udacity Machine Learning分配。
以下列方式使用:
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库)
这条线做什么?
答案 0 :(得分:4)
正如@MosesKoledoye所指出的,predictions
很可能是numpy
数组。
然后使用predictions < 1e-10
生成布尔数组。在由条件设置的布尔数组为True
的所有索引处,该值将更改为1e-10
,即。 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])
这可能在代码中完成的原因可能是防止除零或防止负数扰乱事物,而是插入一个非常小的数字。
答案 1 :(得分:1)
条件(元素&lt; 1e-10)为真的数组的所有元素都设置为1e-10。 实际上,您正在设置最小值。