Pytorch 将张量范围内的所有索引替换为1s

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]执行?是否有方法从[

我有这个生成面具的代码,我真的很讨厌我怎么做。基本上,正如您所看到的,我只是浏览每个名称,并将每个索引从0到名称长度转换为1,我更喜欢一种更优雅的方式来实现这一点。

好吧,您可以简化为以下内容:

#[…]
对于范围内的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