首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >numpy.random.multinomial输出不好吗?

numpy.random.multinomial输出不好吗?
EN

Stack Overflow用户
提问于 2014-04-24 08:48:16
回答 1查看 810关注 0票数 2

我有这个函数:

代码语言:javascript
运行
复制
import numpy as np 
def unhot(vec):
    """ takes a one-hot vector and returns the corresponding integer """
    assert np.sum(vec) == 1    # this assertion shouldn't fail, but it did...
    return list(vec).index(1)

我在调用的输出上调用:

代码语言:javascript
运行
复制
numpy.random.multinomial(1, coe)

当我运行它的时候,我得到了一个断言错误。这怎麽可能?难道不能保证numpy.random.multinomial的输出是一个热点向量吗?

然后我删除了断言错误,现在我有了:

代码语言:javascript
运行
复制
ValueError: 1 is not in list

我是遗漏了什么小字,还是这本书坏了?

EN

回答 1

Stack Overflow用户

发布于 2014-04-25 00:46:01

嗯,这就是问题所在,我应该意识到,因为我以前遇到过:

代码语言:javascript
运行
复制
np.random.multinomial(1,A([  0.,   0.,  np.nan,   0.]))

返回

代码语言:javascript
运行
复制
array([0,                    0, -9223372036854775807,0])

我使用的是一个不稳定的softmax实现,它提供了Nans。现在,我试图确保传递给多项式的参数有一个和<= 1,但我是这样做的:

代码语言:javascript
运行
复制
coe = softmax(coeffs)
while np.sum(coe) > 1-1e-9:
    coe /= (1+1e-5)

有了NaNs,while语句甚至永远不会被触发,我想。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23257855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档