小编D V*_*D V的帖子

在特定索引后用零填充火炬张量

给定一个 3d Tenzor,说: batch x sentence length x embedding dim

a = torch.rand((10, 1000, 96)) 
Run Code Online (Sandbox Code Playgroud)

以及每个句子的实际长度数组(或张量)

lengths =  torch .randint(1000,(10,))
Run Code Online (Sandbox Code Playgroud)

outputs tensor([ 370., 502., 652., 859., 545., 964., 566., 576.,1000., 803.])

如何根据张量“长度”在维度 1(句子长度)的某个索引后用零填充张量“a”?

我想要这样的:

a[ : , lengths : , : ]  = 0
Run Code Online (Sandbox Code Playgroud)

一种方法(如果批量足够大,则速度较慢):

for i_batch in range(10):
    a[ i_batch  , lengths[i_batch ] : , : ]  = 0
Run Code Online (Sandbox Code Playgroud)

python nlp pytorch

4
推荐指数
1
解决办法
2971
查看次数

标签 统计

nlp ×1

python ×1

pytorch ×1