Numpy 为什么这两个功能不相等?
这是取自: 这是简化上述代码的一种尝试:Numpy 为什么这两个功能不相等?,numpy,Numpy,这是取自: 这是简化上述代码的一种尝试: def sample(p, temperature=1.0): p = np.exp(np.log(p) / temperature) p = np.random.multinomial(1, p / p.sum(), 1) return np.argmax(p) 但是,第二个失败,出现以下错误: File "z.py", line 75, in sample p = np.random.
def sample(p, temperature=1.0):
p = np.exp(np.log(p) / temperature)
p = np.random.multinomial(1, p / p.sum(), 1)
return np.argmax(p)
但是,第二个失败,出现以下错误:
File "z.py", line 75, in sample
p = np.random.multinomial(1, p / p.sum(), 1)
File "mtrand.pyx", line 4593, in mtrand.RandomState.multinomial (numpy/random/mtrand/mtrand.c:37541)
ValueError: sum(pvals[:-1]) > 1.0
这怎么可能呢?我的系统是64位的,所以numpy的默认数据类型是float64,但是这个函数的一些输入是32位的float,因此,在其中的某个地方,两种数据类型的混合导致了错误。在将值传递到
多项式之前,您是否比较了这些值?原始函数执行到float64
的转换。什么数据类型具有p
?
File "z.py", line 75, in sample
p = np.random.multinomial(1, p / p.sum(), 1)
File "mtrand.pyx", line 4593, in mtrand.RandomState.multinomial (numpy/random/mtrand/mtrand.c:37541)
ValueError: sum(pvals[:-1]) > 1.0