在官方文档中,我们可以在??这里??查到这两个方法的API(可能需要一些手段才能点开),如果你点开不了,那我帮你看一下这两个方法有哪些区别。
torch.range(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
range返回的数量是到 ? e n d ? s t a r t s t e p ? + 1 \lfloor \frac{end?start}{step} \rfloor +1 ?stepend?start??+1
第二个参数减去第一个参数向下取整+1
例如:
x1 = torch.range(1, 10, 3) # (10-1)/3向下取整+1等于4
print(x1)
输出是:
tensor([ 1., 4., 7., 10.]) # 输出4个数
基本上常用的就是三个参数
x1 = torch.range(1, 10, 2)
print(x1)
输出结果是:
tensor([1., 3., 5., 7., 9.])
torch.arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
可以看到arange方法和range在用法和参数上是完全一样的。
但是他返回的个数是 ? e n d ? s t a r t s t e p ? \lceil \frac{end-start}{step} \rceil ?stepend?start??
如果还是上面的那个例子,我们看看会产生什么结果:
x1 = torch.arange(1, 10, 3)
print(x1)
输出结果:
tensor([1, 4, 7])
可以看到输出的个数只有三个。
因此我们得出结论:
官方解释如下:
This function is deprecated and will be removed in a future release because its behavior is inconsistent with Python’s range builtin. Instead, use torch.arange(), which produces values in [start, end).
from:??https://pytorch.org/docs/stable/generated/torch.range.html#torch.range??
技术有限,如有纰漏或错误欢迎大佬指正,感谢!
标签: