掩码mask

需要注意的是当掩码是1(true)的时候,是要掩住的内容当掩码为0(false)的时候,是不需要掩住的内容

当然这是正常操作,还有不正常操作,比如当掩码为1的时候,但真正用的时候取个反,虽然原理还是一样,但是如果从掩码这个地方看的话就是正好反着了

我的主要写的内容取自这篇文章https://www.cnblogs.com/YuanShiRenY/p/torch_mask.html

但是感觉他有的地方讲反了,所以重新整理了一下

torch中的mask主要分为三种:masked_fill, masked_select, masked_scatter

masked_fill:

fill是填满,填补的意思,masked_fill就是对mask掉的内容填补成自己想要的数

输入:

import torch
x=torch.randint(200,[3,4])
print(x)
mask=torch.randint(2,[3,4])
print(mask)
torch.masked_fill(input=x,mask=mask,value=-1)

输出:

tensor([[ 99,  98,  91,  74],
        [ 39, 104,  48, 149],
        [196, 184,  76,  41]])
tensor([[0, 0, 0, 0],
        [0, 0, 1, 1],
        [0, 1, 0, 1]])
tensor([[ 99,  98,  91,  74],
        [ 39, 104,  -1,  -1],
        [196,  -1,  76,  -1]])

 最后一行也可以写成

torch.masked_fill(x,mask,-1)

masked_select:

select是选择的意思,那么masked_select就是将没有mask掉的内容输出

输入:

import torch
x=torch.randint(200,[3,4])
print(x)
mask=torch.randint(2,[3,4]).bool()
print(mask)
torch.masked_select(x,mask)

输出:

tensor([[ 57, 146, 129, 138],
        [ 20,  77,  54,  34],
        [  4,  48, 137, 110]])
tensor([[ True, False,  True, False],
        [False, False,  True, False],
        [False,  True, False, False]])
tensor([ 57, 129,  54,  48])

 

 

masked_scatter:

对于mask掉的内容,根据source从头开始填充

输入: 

import torch
x=torch.randint(200,[3,4])
print(x)
mask=torch.randint(2,[3,4]).bool()
print(mask)
# source = torch.zeros_like(x)
source = torch.randint(10,[3,4])
print(source)
torch.masked_scatter(input=x, mask=mask, source=source)

输出:

tensor([[116, 128, 181, 129],
        [ 11,  16,  65, 167],
        [ 58,  56,  38,  53]])
tensor([[False,  True,  True,  True],
        [False, False,  True, False],
        [False, False, False, False]])
tensor([[5, 6, 7, 5],
        [6, 8, 9, 8],
        [8, 1, 5, 9]])
tensor([[116,   5,   6,   7],
        [ 11,  16,   5, 167],
        [ 58,  56,  38,  53]])

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值