💻 源码
import torch

if __name__ == '__main__':
    cls_token_index = 3  # 句子开头
    sep_token_index = 4  # 句子结尾

    input_ids = torch.randint(low=1,high=6,size=(2,5))
    attentition_mask = torch.randint(low=0,high=2,size=(2,5))

    print(f"输入的句子词索引input_ids:\n{input_ids}")
    print(f"输入的句子掩码attentition_mask:\n{attentition_mask}")

    ebd_mask = (input_ids != cls_token_index) & (input_ids != sep_token_index)
    print(f"输入的句子处理后的掩码ebd_mask_1:\n{ebd_mask}")

    ebd_mask = ebd_mask & attentition_mask
    print(f"输入的句子处理后的掩码ebd_mask_2:\n{ebd_mask}")

    print("-"*30)

    ebd_mask = ebd_mask.unsqueeze(-1)
    ebd = torch.randint(low=1,high=10,size=(2,5,4))
    print(f"词向量的掩码ebd_mask:{ebd_mask}")
    print(f"前_词向量ebd:{ebd}")

    ebd = ebd * ebd_mask
    print(f"后_词向量ebd:{ebd}")

    print("1   ", ebd.sum(dim=1))
    print("1   ", ebd.sum(dim=1).shape)
    print("-1  ", ebd.sum(dim=-1).shape)