将含有两个及以上的布尔值的张量用在了 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
对含有两个及以上的布尔值张量执行了 or、and、not 这样的操作:
a = torch.tensor([True, False]) b = torch.tensor([False, True]) """ 以下三种操作都会报错 """ print(a or b) print(a and b) print(not a)
需要注意的是,如果 a 和 b 都只含一个布尔值,则不会出现错误:
a = torch.tensor([True]) b = torch.tensor([False]) print(a or b) # tensor([True]) print(a and b) # tensor([False]) print(not a) # False



