检查 torch::Tensor 是否为空的最佳方法是什么?

Rik*_*ika 4 c++ torch libtorch

我目前正在使用该has_storage()方法来检查张量是否为空,但我想知道除此之外还有什么更好的方法!以及除了初始化torch::Tensor总是有一个存储而空的没有的事实之外,使用这个是否有任何影响!

Rik*_*ika 6

经过一番挖掘,发现最好的解决方案是使用.numel()返回张量具有的元素数量的方法。
总之:

  • 要知道是否分配了张量(类型和存储),请使用 defined()。
  • 要知道分配的张量是否具有零个元素,请使用 numel()
  • 要知道是否分配了张量以及它是否具有零元素,请使用defined()然后numel()

旁注:
空张量(torch::Tensor t;例如使用创建的张量)在使用时返回零.numel()。而大小/大小将导致异常。

这是对返回空张量(在我上面刚刚解释的意义上)的情况的完美检查,您可以简单地执行以下操作:

if (!tensor.numel())
{
    std::cout<<"tensor is empty!" << std::endl;
    // do other checks you wish to do
}
Run Code Online (Sandbox Code Playgroud)

参考