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
欢迎关注【OAOA】