基于pytorch 快速取出指定位置的值 ,<mask> 输出 向量获取

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处的向量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值