赞
踩
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])
- x = torch.range(-8, 8)
- y = torch.arange(-8, 8)
- print(x, x.dtype)
- print(y, y.dtype)
输出
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
)
输出
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。