火炬C ++:检查NAN的API

时间:2019-01-15 18:49:09

标签: pytorch torch libtorch

我正在使用libtorch C ++。在python版本中,我们可以通过调用张量的numpy值轻松检查张量的值,而在numpy中,我们有np.isnan()。我想知道libtorch C++中是否有内置函数来检查张量是否具有任何NAN值?

谢谢, 苦参碱

2 个答案:

答案 0 :(得分:2)

尝试at::isnan

int main() {
  torch::Tensor tensor = torch::rand({2, 3});
  std::cout << tensor << std::endl;
  std::cout << at::isnan(tensor) << std::endl;
  return 0;
}

注意:由于稳定版没有isnan,因此我必须安装libtorch的每晚版本。

答案 1 :(得分:2)

加上法比奥的答案(我的声誉太低,无法置评):

如果您实际上想在assertif条件下使用有关NAN的信息,则需要像这样将其从torch::Tensor转换为C ++ bool

torch::Tensor myTensor;
// do something
auto tensorIsNan = at::isnan(myTensor).any().item<bool>(); // will be of type bool