pytorch中的in-place操作

pytorch文档
https://pytorch.org/docs/stable/tensors.html?highlight=masked_fill#torch.Tensor.masked_fill_

  • in-place,即原地操作符,直接在原来的内存上改变变量的值,可以称为原地操作符(以masked_fill_()和masked_fill()为例说明)
    注:当前浅粉色显示设置方法为,在句子的两端添加" `` ",即键盘左上角波浪线下的符号

函数说明-masked_fill_(mask, value)

  • Fills elements of self tensor with value where mask is True. The shape of mask must be broadcastable with the shape of the underlying tensor.(当mask值为True时候,用value进行填充,tensor和mask的形状需要保持一致)

举例说明

# 例1
import torch
data = torch.tensor([[1,0,0],[1,1,0],[1,1,1]])
mask = torch.tensor([[False,True,True],[False,False,True],[False,False,False]])

new_data = data.masked_fill(mask,-100)
print(data)
# print(new_data)
'''
data--没改变原来的值
tensor([[1, 0, 0],
        [1, 1, 0],
        [1, 1, 1]])
'''
new_data = data.masked_fill_(mask,-100)
print(data)
# print(new_data)
'''
data--改变了原来的值
tensor([[   1, -100, -100],
        [   1,    1, -100],
        [   1,    1,    1]])
'''
# 例二
# mask[:,None,None],会使得mask升维度,[3,3]-->[3,1,1,3]
import torch
data = torch.tensor([[1,0,0],[1,1,0],[1,1,1]])
mask = torch.tensor([[1,0,0],[1,1,0],[1,1,1]])

# mask=mask[:,None,None].eq(0)
# print(mask.size())
new_data = data.masked_fill_(mask=mask.eq(0),value=-100)
print(data)
# print(new_data)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值