Pytorch 将张量范围内的所有索引替换为1s
我有这个生成面具的代码,我真的很讨厌我怎么做。基本上,正如您所看到的,我只是浏览每个名称,并将每个索引从0到名称长度转换为1,我更喜欢一种更优雅的方式来实现这一点。好吧,您可以简化为以下内容:Pytorch 将张量范围内的所有索引替换为1s,pytorch,Pytorch,我有这个生成面具的代码,我真的很讨厌我怎么做。基本上,正如您所看到的,我只是浏览每个名称,并将每个索引从0到名称长度转换为1,我更喜欢一种更优雅的方式来实现这一点。好吧,您可以简化为以下内容: #[…] 对于范围内的i(批次_sz): ret[0,i,:len(数据[i])]=1 好吧,您可以简化为以下内容: #[…] 对于范围内的i(批次_sz): ret[0,i,:len(数据[i])]=1 是否有方法从[max length-len(数据[i]),max length]执行?是否有方法从[
#[…]
对于范围内的i(批次_sz):
ret[0,i,:len(数据[i])]=1
好吧,您可以简化为以下内容:
#[…]
对于范围内的i(批次_sz):
ret[0,i,:len(数据[i])]=1
是否有方法从[max length-len(数据[i]),max length]执行?是否有方法从[max length-len(数据[i]),max length]执行?
def generate_mask(data : list, max_seq_len : int):
"""
Generates a mask for data where each element is expected to be max_seq_len length after padding
Args:
data : The data being forwarded through LSTM after being converted to a tensor
max_seq_len : The length of the names after being padded
"""
batch_sz = len(data)
ret = torch.zeros(1,batch_sz, max_seq_len, dtype=torch.bool)
for i in range(batch_sz):
name = data[i]
for letter_idx in range(len(name)):
ret[0][i][letter_idx] = 1
return ret