当前位置:网站首页>【PyTorch Bug】RuntimeError: Boolean value of Tensor with more than one value is ambiguous

【PyTorch Bug】RuntimeError: Boolean value of Tensor with more than one value is ambiguous

2022-07-05 09:01:00 aelum

Case 1

将含有两个及以上的布尔值的张量用在了 if 判断条件里:

a = torch.tensor([True, False])
if a:
    pass

出现这种错误的可能原因之一是想判断 a 不为 None,此时应改为如下语句

if a is not None:

需要注意的是,如果 a 只含一个布尔值,则判断不会出现错误:

a = torch.tensor([True])
if a:
    print(1)
# 1

Case 2

使用交叉熵损失时没有先实例化

inputs = torch.randn(6, 4)
target = torch.randint(4, (6, ))
loss = nn.CrossEntropyLoss(inputs, target)

应先实例化再计算损失:

criterion = nn.CrossEntropyLoss()
loss = criterion(inputs, target)

Case 3

对含有两个及以上的布尔值张量执行了 orandnot 这样的操作:

a = torch.tensor([True, False])
b = torch.tensor([False, True])
""" 以下三种操作都会报错 """
print(a or b)
print(a and b)
print(not a)

需要注意的是,如果 ab 都只含一个布尔值,则不会出现错误:

a = torch.tensor([True])
b = torch.tensor([False])
print(a or b)
# tensor([True])
print(a and b)
# tensor([False])
print(not a)
# False
原网站

版权声明
本文为[aelum]所创,转载请带上原文链接,感谢
https://raelum.blog.csdn.net/article/details/125609314