2

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

    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 成为,因为只有在 ab 都等于[1,0,0]1 的位置才有 1 才有意义。我也期待 d 成为,因为这些是 ab 等于 1的位置。令我惊讶的是,结果完全相反!有什么解释吗?[1,1,0]

4

1 回答 1

1

根据 Lua 文档:

运算符,如果为假则返回其第一个参数;否则,它返回它的第二个参数。运算符 or 如果不为假则返回其第一个参数;否则,它返回它的第二个参数

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

于 2017-03-17T15:10:45.987 回答