¿Cómo puedo evitar errores de valor cuando uso numpy.random.multinomial?

Cuando uso este generador aleatorio:numpy.random.multinomial, Sigo obteniendo:

ValueError: sum(pvals[:-1]) > 1.0

Siempre paso la salida de esta función softmax:

def softmax(w, t = 1.0):
    e = numpy.exp(numpy.array(w) / t)
    dist = e / np.sum(e)
    return dist

excepto que ahora recibo este error, también agregué esto para el parámetro (pvals):

while numpy.sum(pvals) > 1:
    pvals /= (1+1e-5)

Pero eso no lo resolvió. ¿Cuál es la forma correcta de asegurarse de evitar este error?

EDITAR: aquí hay una función que incluye este código

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])

Respuestas a la pregunta(4)

Su respuesta a la pregunta