跑实验过程中,遇到以下问题
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
# 出错地点
if np.isnan(loss.to('cpu').detach().numpy()):
raise ValueError('loss is nan!')
'''
出错原因:
使用了2块GPU进行实验,返回的loss=[61.99019 95.184875];
此时,直接使用np.isnan()返回的结果为[False, False],无法直接使用if进行判断;
因此,需要使用all或者any函数进行改正,如下所示
'''
if any(np.isnan(loss.to('cpu').detach().numpy())):
raise ValueError('loss is nan!')
附any函数和all函数的例子:
import numpy as np
res = np.array([True, False])
print(any(res)) # True
print(all(res)) # False