面具有什么用? 我经常看到使用掩码(C,C++,Python,java),比如蒙面的SoStMax或者其他东西。我不明白它的用途(我不是说计算机视觉中的面具,而是说编程中的面具)

面具有什么用? 我经常看到使用掩码(C,C++,Python,java),比如蒙面的SoStMax或者其他东西。我不明白它的用途(我不是说计算机视觉中的面具,而是说编程中的面具),python,theano,Python,Theano,我将掩码理解为在按位操作(如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 us

我将掩码理解为在按位操作(如
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')
如果您能帮助我理解以下内容,我将不胜感激:

  • 什么是掩码变量(比如这里为什么称第二个变量为掩码,这里有什么特别的吗)

  • 它们在哪里使用

  • 如何创建掩码变量


  • 谢谢,干杯:)。

    与其说它只是一个面具,不如说它是一个小面具,因为这是完整的术语

    位掩码通常用于检查是否设置了整数上的位,或者设置它们。它允许人们做一些形式上的事情

    if (time & CHEESE_MASK) eat()
    if (time & CAKE_MASK) tea()
    
    您可能会注意到,在这个例子中,可能是时候吃奶酪和蛋糕了。 这提供了一种非常有用的方法,可以在内存中的一个小空间中进行“配置”,或者为函数参数提供一种易于阅读的格式,例如

    shop (CHEESE_MASK | CAKE_MASK)
    
    我想是时候去买奶酪和蛋糕了

    什么是掩码变量

    按位AND和OR操作具有以下属性:

    X & 1 == X
    X & 0 == 0
    
    因此,如果你
    任何一位都是1,它不会改变它的值。如果您
    任何位为0,它将重置为0。因此,将一个值“1”和“0”组合在一起,进行运算
    ,可以将一些位重置为0,而其他位则保持不变

    X | 1 == 1
    X | 0 == X
    
    在另一侧,如果
    任何位为1,则将其设置为1。如果
    任何位为0,则不会更改其值。因此,您可以设置一些位,同时保持其他位不变

    X | 1 == 1
    X | 0 == X
    
    它们在哪里使用

    将多个位组合到一个变量中会创建掩码,您可以使用
    重置某些位,或使用
    设置它们

    如何创建掩码变量


    您可以确定需要设置或重置哪些位,并相应地进行计算。因为没有多少语言支持二进制表示法,而且它们通常用十六进制编写,因为二进制到十六进制之间有简单的映射,反之亦然(四位映射到一个十六进制数字)。

    我不理解否决票…它是重复的…我想这是因为你的问题太广泛了…有一个否决票(Upd:好的,现在有两个……)这个问题似乎太宽泛了。有很多东西叫做“面具”。问题中的示例是特定于应用程序的,没有显示任何上下文。@EugeneSh。我将添加上下文,请稍后再看。@n00dl3请再次看,我添加了上下文,谢谢。请再次看问题,我在此处添加了称为掩码的特定变量。不确定您的更改是否有助于使问题更清楚…在问题的代码中,为什么人们会把第二个varaiable称为面具???@John77,因为它打算用作面具