给定一个 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)