torch.arange函数详解
官方文档:torch.arange
函数原型
arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) -> Tensor
用法
返回大小为的一维张量,其值介于区间 为步长等间隔取值
参数说明
参数 | 类型 | 说明 |
---|---|---|
start | Number | 起始值,默认值:0 |
end | Number | 结束值 |
step | Number | 步长,默认值:1 |
关键字参数
关键字参数 | 类型 | 说明 |
---|---|---|
out | Tensor | 输出张量 |
dtype | torch.dtype | 期望的返回张量的数据类型。默认值:如果是None ,则使用全局默认值。如果未给出 dtype,则从其他输入参数推断数据类型。如果 start、end 或 stop 中的任何一个是浮点数,则 dtype 被推断为默认值,参见 get_default_dtype()。否则,dtype 被推断为 torch.int64 |
layout | torch.layout | 返回张量的期望 layout。默认值:torch.strided |
device | torch.device | 返回张量的期望设备。默认值:如果是None ,则使用当前设备作为默认张量类型,参见torch.set_default_tensor_type()。对于 CPU 类型的张量,则 device 是 CPU ,若是 CUDA 类型的张量,则 device 是当前的 CUDA 设备 |
requires_grad | bool | autograd 是否记录返回张量上所作的操作。默认值:False |
代码示例
>>> torch.arange(5) # 默认以 0 为起点
tensor([ 0, 1, 2, 3, 4])
>>> torch.arange(1, 4) # 默认间隔为 1
tensor([ 1, 2, 3])
>>> torch.arange(1, 2.5, 0.5) # 指定间隔 0.5
tensor([ 1.0000, 1.5000, 2.0000])
pyTorch中torch.range()和torch.arange()的区别
torch.range()和torch.arange()的区别
x = torch.range(-8, 8)
y = torch.arange(-8, 8)
print(x, x.dtype)
print(y, y.dtype)
output:
tensor([-8., -7., -6., -5., -4., -3., -2., -1., 0., 1., 2., 3., 4., 5.,6., 7., 8.]) torch.float32
tensor([-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7]) torch.int64
可以看到,torch.range()的范围是[-8, 8],类型为torch.float32
torch.arange()的范围是[-8, 8),类型为torch.int64
在梯度设置时会出现错误:
x = torch.range(-8, 8, 1, requires_grad=True)
y = torch.arange(-8, 8, 1, requires_grad=True)
print(x, x.dtype)
print(y, y.dtype)
即只有当类型为float时才可设置requires_grad=True,故可将
y = torch.arange(-8, 8, 1, requires_grad=True)
改为以下,即手动改变数据类型即可。
y = torch.arange(-8.0, 8.0, 1.0, requires_grad=True)
output:
tensor([-8., -7., -6., -5., -4., -3., -2., -1., 0., 1., 2., 3., 4., 5.,6., 7., 8.], requires_grad=True)
torch.float32
tensor([-8., -7., -6., -5., -4., -3., -2., -1., 0., 1., 2., 3., 4., 5.,6., 7.], requires_grad=True)
torch.float32
总结
到此这篇关于PyTorch中Torch.arange函数的文章就介绍到这了,更多相关PyTorch Torch.arange函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!