PyTorch中的masked_select、masked_fill_()、 masked_fill()的区别

mask_fill的整体意思是使用 value 填充mask值为True的位置,所以需要注意mask的值,有时候需要~取反
masked_fill_(mask, value) - 函数名后面加下划线。in-place version 在 PyTorch 中是指当改变一个 tensor 的值的时候,不经过复制操作,而是直接在原来的内存上改变它的值,可以称为原地操作符。

masked_fill(mask, value) -> Tensor - 函数名后面没有下划线。out-of-place version 在 PyTorch 中是指当改变一个 tensor 的值的时候,经过复制操作,不是直接在原来的内存上改变它的值,而是修改复制的 tensor。

masked_select 函数最关键的参数就是布尔掩码 mask,传入 mask 参数的布尔张量通过 True 和 False (或 1 和 0) 来决定输入张量对应位置的元素是否保留,既然是一一对应的关系,这就需要传入 mask 中的布尔张量和传入 input 中的输入张量形状要相同。这里需要注意此时的形状相同包括显式的相等,还包括隐式的相等。

masked_select 函数虽然简单,但是有几点需要注意:

1、使用 masked_select 函数返回的结果都是 1D 张量,张量中的元素就是被筛选出来的元素值;
2、传入 input 参数中的输入张量和传入 mask 参数中的布尔张量形状可以不一致,但是布尔张量必须要能够通过广播机制扩展成和输入张量相同的形状;

参考:
https://zhuanlan.zhihu.com/p/348035584
https://blog.csdn.net/chengyq116/article/details/106961087

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值