我经常看到使用掩码(在C,C ++,Python,Java中),比如屏蔽softmax或其他东西。我无法理解它的用法(我不是在谈论计算机视觉中的面具,而是谈论编程中的面具)。
我将掩码理解为您在x & 1
这样的按位操作中使用的东西:这里1是一个在按位运算中执行某些操作的掩码。
但是,我看到越来越多的使用掩码如下:
import theano
import theano.tensor as tt
# The context document (2D matrix of long type called context.)
context_bt = tt.lmatrix('context')
# Context document mask used to distinguish real symbols from the sequence and padding symbols that are at the end.
context_mask_bt = tt.matrix('context_mask')
如果你能帮我理解,我将不胜感激:
什么是掩码变量(这里为什么要调用第二个变量掩码,这里有什么特别的东西)?
他们在哪里使用?
如何创建蒙版变量?
谢谢,干杯:)。
答案 0 :(得分:1)
不要把它称为面具,而是将其称为掩码,因为这是完整的术语。
通常使用位掩码来检查整数上的位是否已设置或设置它们。它允许人们做某种形式的事情
if (time & CHEESE_MASK) eat()
if (time & CAKE_MASK) tea()
你可能会注意到,在这个例子中,它可能是奶酪和蛋糕的时间。 这提供了一种非常有用的方法,可以在内存中的小空间中使用“配置”,或者为函数参数提供易于阅读的简单格式 - 例如
shop (CHEESE_MASK | CAKE_MASK)
建议是时候去购买奶酪和蛋糕了。
答案 1 :(得分:0)
什么是面具变量?
按位AND和OR运算具有以下属性:
X & 1 == X
X & 0 == 0
因此,如果您AND
任意位为1,则不会改变它的值。如果AND
任何位为0,它将重置为0.因此,将一个值1和0组合并执行操作AND
,您可以将某些位重置为0,而其他位则保持不变。
X | 1 == 1
X | 0 == X
另一方面,如果OR
任何位为1,则将其设置为1.如果OR
任何位为0,则不会更改它的值。因此,您可以设置一些位,同时保持其他位置不受影响。
他们在哪里使用?
将多个位组合成一个变量会创建一个掩码,您可以使用AND
重置某些位或使用OR
来设置它们。
如何创建遮罩变量?
您可以确定需要设置或重置的位,并相应地进行计算。因为没有多少语言支持二进制表示法,而且它们通常用十六进制编写,因为从二进制到十六进制都有简单的映射,反之亦然(4位映射到一个十六进制数字)。