我相信有两种方法可以判断torch.Tensor的值是否都大于0.无论是.all()还是all(),一个最小的可重现的例子将说明我的 idea :

import torch

walls = torch.tensor([-1, 0, 1, 2])

result1 = (walls >= 0.0).all()  # DIFFERENCE WITH BELOW???
result2 = all(walls >= 0.0)  # DIFFERENCE WITH ABOVE???

print(result1)  # Output: False
print(result2)  # Output: False

all()是内置的,所以我想我更喜欢使用它,但我在互联网上看到的大多数代码都使用.all(),所以我担心会有意想不到的行为.

他们两个的行为是完全一样的吗?

推荐答案

all是Python内置的,这意味着它只能使用非常通用的接口.在这种情况下,all将张量视为不透明的iterable.它通过一个接一个地迭代张量的元素, for each 元素构造一个Python对象,然后判断该Python对象的真实性.这就是slow人,加上几层不必要的低效.

相比之下,Tensor.all知道Tensor对象是什么,并可以直接对其进行操作.它只需要直接扫描张量的内部存储.没有迭代器协议函数调用,没有中间的Python对象.

与内置all相比,Tensor.all在时间和内存上的效率总是高出far.

Python相关问答推荐

将行从一个DF添加到另一个DF

在matplotlib动画gif中更改配色方案

从包含数字和单词的文件中读取和获取数据集

Pandas :多索引组

使用GEKKO在简单DTE系统中进行一致初始化

如果条件为真,则Groupby.mean()

log 1 p numpy的意外行为

对所有子图应用相同的轴格式

Pandas计数符合某些条件的特定列的数量

Django REST Framework:无法正确地将值注释到多对多模型,不断得到错误字段名称字段对模型无效'<><>

NumPy中条件嵌套for循环的向量化

如何合并两个列表,并获得每个索引值最高的列表名称?

如何使用SentenceTransformers创建矢量嵌入?

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

matplotlib + python foor loop

Geopandas未返回正确的缓冲区(单位:米)

寻找Regex模式返回与我当前函数类似的结果

导入错误:无法导入名称';操作';

在第一次调用时使用不同行为的re. sub的最佳方式

Django在一个不是ForeignKey的字段上加入'