如何解决检查Torch :: Tensor是否为空的最佳方法是什么?
我目前正在使用has_storage()
方法来检查张量是否为空,但是我想知道是否还有其他更好的方法!以及使用此操作是否有任何其他含义,除了已初始化的torch::Tensor
总是具有存储空间而空的 ElevatedButton(
onPressed: () => Navigator.of(context,rootNavigator: true)
.push(MaterialPageRoute(
fullscreenDialog: true,builder: (context) => UserLoginPage(),)),child: Text('Login to continue'),),
却没有存储空间之外!
解决方法
是的,这里有一个细微的差别:所有张量都不具有相同的基础实现,并且某些实现无论如何都将has_storage
返回false
。稀疏张量尤其如此(请参见here)。
但是我不知道有什么更好的方法。只要确保正确使用了稀疏张量(以及opaque tensors,如果需要它们,^^)就可以正确地跟踪它们
,经过一番挖掘,得出的结论是,最好的解决方案是使用.numel()
方法,该方法返回张量具有的元素数。
总结:
- 要了解是否已分配张量(类型和存储),请使用define()。
- 要了解分配的张量是否具有零个元素,请使用
numel()
- 要了解张量是否已分配以及张量是否为零,请使用
defined()
,然后使用numel()
旁注:
当使用torch::Tensor t;
时,空张量(例如,使用.numel()
创建的张量)将返回零。而尺寸会导致异常。
这是对返回空的张量(在我上面刚刚解释过的意义上)的情况下的一种完美检查:
if (!tensor.numel())
{
std::cout<<"tensor is empty!" << std::endl;
// do other checks you wish to do
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。