Deep learning 火炬元件逻辑操作和/或

Deep learning 火炬元件逻辑操作和/或,deep-learning,torch,elementwise-operations,Deep Learning,Torch,Elementwise Operations,我试图对张量执行逻辑元素操作,但似乎“and”关键字执行逻辑or,而“or”关键字执行逻辑and: 我原以为c会变成[1,0,0],因为只有在a和b都等于1的位置才有意义。我还期望d变成[1,1,0],因为这些位置a或b等于1。令我惊讶的是,结果完全相反! 有什么解释吗?根据Lua文档: 运算符并返回其第一个参数(如果为false);否则,, 它返回第二个参数。运算符或返回其第一个 论点,如果它不是假的;否则,它将返回第二个 论据 在这种情况下,这种行为的发生只是一种“巧合”。当应用和运算符时,

我试图对张量执行逻辑元素操作,但似乎“and”关键字执行逻辑or,而“or”关键字执行逻辑and:

我原以为c会变成
[1,0,0]
,因为只有在ab都等于1的位置才有意义。我还期望d变成
[1,1,0]
,因为这些位置ab等于1。令我惊讶的是,结果完全相反! 有什么解释吗?

根据Lua文档:

运算符并返回其第一个参数(如果为false);否则,, 它返回第二个参数。运算符或返回其第一个 论点,如果它不是假的;否则,它将返回第二个 论据


在这种情况下,这种行为的发生只是一种“巧合”。当应用
运算符时,它将返回第二个参数(张量
a
),当应用
运算符时,它将返回第一个参数(张量
b
)。此外,张量
a
对应于元素逻辑运算,而张量
b
对应于元素逻辑or。

警告:根据答案,此方法对于张量上的元素逻辑运算绝对不正确。你说得对!我刚刚计算过使用torch.cmax(a,b)相当于“a或b”,torch.cmin(a,b)相当于“a和b”(你需要确保a和b是逻辑张量;也就是说,它们只包含1和0)
    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)