inputs=tokenizer.encode_plus(text,max_length=512,padding="max_length",truncation=True,add_special_tokens=True) #tokenid
input_ids=torch.tensor(inputs["input_ids"]).unsqueeze(0).to(device)
mask=torch.tensor(inputs["attention_mask"]).unsqueeze(0).to(device)
mask_pos=np.where(np.array(inputs["input_ids"]) == tokenizer.mask_token_id) #用numpy中的where得到矩阵中指定值 的位置index ,结果如[ 8,15] 类似的列表
mask_pp=torch.tensor(inputs["input_ids"]) == tokenizer.mask # 用pytorch中的张量运算得到掩码矩阵,类似[False,False,False,True,Flase...] 这样的逻辑值矩阵或列表。
out=model(input_ids=input_ids,attention_mask=mask).last_hidden_state #得到 bert输出的表示向量
final=out[0][mask_pp] #得到<mask> 位置的向量表示
print(final) #打印当前 向量,其实没啥用,也看不懂。这种向量一般不直接用,还得转换。
mask_vector=out[0][mask_pos] #另一种方法得到mask处的向量