美文网首页
Boolean value of Tensor with mor

Boolean value of Tensor with mor

作者: blair_liu | 来源:发表于2021-06-07 15:57 被阅读0次

pytorch bug 记录

RuntimeError: Boolean value of Tensor with more than one value is ambiguous
简单复现以下错误:

a = torch.zeros(2)
print(a)  # tensor([0., 0.])
b = torch.ones(2)
print(b)  # tensor([1., 1.])
print(a == b)  # 可以 tensor([False, False])
# print((a == b) or (a != b))  # 报错
# RuntimeError: Boolean value of Tensor with more than one value is ambiguous

原因:and or not逻辑运算符三兄弟只能处理单个变量,没法对张量使用

解决方法:
使用位运算符

print((a == b) | (a != b))

加括号原因:位运算符优先级高于等于运算符

同理:numpy也会有这个问题,解决方式一样

import numpy as np
a = np.zeros(2)
print(a)  # [0. 0.]
b = np.ones(2)
print(b)  # [1. 1.]
print((a == b))  # [False False]
print((a == b) or (a != b))  # 报错
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
print((a == b) | (a != b))

相关文章

网友评论

      本文标题:Boolean value of Tensor with mor

      本文链接:https://www.haomeiwen.com/subject/sjyleltx.html