火炬元素逻辑操作和/或

时间:2017-03-17 03:07:14

标签: deep-learning torch elementwise-operations

我正在尝试在张量上执行逻辑元素操作,但似乎"和"关键字执行逻辑,而"或"关键字执行逻辑

    a = torch.zeros(3)
    a[1] = 1                      -- a will be [1,0,0]
    b = torch.ones(3)
    b[3] = 0                      -- b will be [1,1,0]
    c = torch.eq(a,1) and torch.eq(b,1) 
    d = torch.eq(a,1) or  torch.eq(b,1)

我期待c成为[1,0,0]因为只有在 b等于1的位置才有意义才有意义。另外我期待d成为{ {1}}因为那些是 b等于1的位置。令我惊讶的是,结果完全相反! 有什么解释吗?

1 个答案:

答案 0 :(得分:1)

根据Lua docs:

  

运算符并返回其第一个参数(如果它为false);除此以外,   它返回第二个参数。运营商或首先返回   论证如果不是假的;否则,它返回第二个   参数

在这种情况下,这种行为恰好发生在"巧合"。在应用a运算符时,它将在应用and运算符和第一个参数(Tensor b)时返回第二个参数(Tensor or)。此外,张量a对应于元素逻辑,而张量b对应于元素逻辑或。