面膜有什么用?

时间:2016-10-11 14:51:02

标签: python theano

我经常看到使用掩码(在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')

如果你能帮我理解,我将不胜感激:

  1. 什么是掩码变量(这里为什么要调用第二个变量掩码,这里有什么特别的东西)?

  2. 他们在哪里使用?

  3. 如何创建蒙版变量?

  4. 谢谢,干杯:)。

2 个答案:

答案 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位映射到一个十六进制数字)。