当我使用这个随机生成器:numpy.random.multinomial
时,我一直得到以下结果:
ValueError: sum(pvals[:-1]) > 1.0
我总是传递这个softmax函数的输出:
def softmax(w, t = 1.0):
e = numpy.exp(numpy.array(w) / t)
dist = e / np.sum(e)
return dist
现在我遇到了这个错误,我还添加了以下参数(pvals
):
while numpy.sum(pvals) > 1:
pvals /= (1+1e-5)
但这并不能解决问题。如何正确确保我避免此错误?
编辑:以下是包含此代码的函数:
def get_MDN_prediction(vec):
coeffs = vec[::3]
means = vec[1::3]
stds = np.log(1+np.exp(vec[2::3]))
stds = np.maximum(stds, min_std)
coe = softmax(coeffs)
while np.sum(coe) > 1-1e-9:
coe /= (1+1e-5)
coeff = unhot(np.random.multinomial(1, coe))
return np.random.normal(means[coeff], stds[coeff])
pvals.sum()
ä¼ é€’ç»™np.random.multinomial
时,它的值是多少? - askewchanA
是什么以及完整的回溯信息(包括实际代码,sum(pvals[:-1]) > 1.0
这段代码并未呈现)。 - Davidmhnp.random.choice
而不是np.random.multinomial
,则不会出现错误并获得相同的结果。 - greentec