python - 将状态整数转换为 onehotvector
问题描述
我有一个函数用于将两个状态转换为一个单热向量并将它们全部组合起来,它工作正常,但如果我有一个大L
的 ,例如3000
,这将需要时间。该功能与L=3
.
def OH3(x,end=2,len=3):
x = T.LongTensor([[x]])
end = T.LongTensor([[end]])
one_hot_x = T.FloatTensor(len,l)
one_hot_end = T.FloatTensor(len,l)
first=one_hot_x.zero_().scatter_(1,x,1)
second=one_hot_end.zero_().scatter_(1,end,1)
vector=T.cat((one_hot_x,one_hot_end),dim=1)
return vector
输出:
OH3(1)
tensor([[0., 1., 0., 0., 0., 1.]])
正如我所提到的,该功能工作正常,但对于大量状态来说速度较慢,我一次发送多个状态,比如 500 个状态,需要 4 秒
有更快的方法吗?
解决方案
如果上面评论中的假设是正确的,那么这应该尽可能快地完成,一个新数组的分配和 2 个赋值操作。如果我遗漏了什么,请告诉我。
def OH3(x,end=2,len=3):
vector = torch.zeros(2*len,dtype = int)
vector[[x,len+end] = 1
return vector
推荐阅读
- node.js - 带有 node-sass、autoprefixer 和 cssnano 的 npm
- android - SwipeRefreshLayout:得到 ACTION_MOVE 事件但没有活动指针 id
- r - 在 R 中删除 2000 年之前的年份
- javascript - Puppeteer - 单击没有输入 ID 的按钮
- symfony - Symfony插入表,所有列外键
- variables - 如何使用 NASM 在引导扇区中定义和使用变量?
- php - API url 中的 PHP 回显
- react-native - React Native Maps onMapReady getMapBoundaries
- django - 仪表板 url 生成唯一 url 以允许未连接的用户查看特定仪表板
- reactjs - ListItem(Material UI组件)中的React Typescript prop错误