DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on

linspace in PyTorch

Buy Me a Coffee

*Memos:

linspace() can create the 1D tensor of the zero or more integers, floating-point numbers or complex numbers evenly spaced between start and end(start<=x<=end) as shown below:

*Memos:

  • linspace() can be used with torch but not with a tensor.
  • The 1st argument with torch is start(Required-Type:int, float, complex or bool). *The 0D tensor of int, float, complex or bool also works.
  • The 2nd argument with torch is end(Required-Type:int, float, complex or bool). *The 0D tensor of int, float, complex or bool also works.
  • The 3rd argument with torch is steps(Required-Type:int): *Memos:
    • It must be greater than or equal to 0.
    • The 0D tensor of int also works.
  • There is dtype argument with torch(Optional-Default:None-Type:dtype): *Memos:
    • If it's None, it's inferred from start, end or step, then for floating-point numbers, get_default_dtype() is used. *My post explains get_default_dtype() and set_default_dtype().
    • Setting start and end of integer type is not enough to create the 1D tensor of integer type so integer type with dtype must be set.
    • dtype= must be used.
    • My post explains dtype argument.
  • There is device argument with torch(Optional-Default:None-Type:str, int or device()): *Memos:
  • There is requires_grad argument with torch(Optional-Default:False-Type:bool): *Memos:
    • requires_grad= must be used.
    • My post explains requires_grad argument.
  • There is out argument with torch(Optional-Default:None-Type:tensor): *Memos:
    • out= must be used.
    • My post explains out argument.
import torch

torch.linspace(start=10, end=20, steps=0)
torch.linspace(start=20, end=10, steps=0)
# tensor([])

torch.linspace(start=10., end=20., steps=1)
tensor([10.])

torch.linspace(start=20, end=10, steps=1)
# tensor([20.])

torch.linspace(start=10., end=20., steps=2)
# tensor([10., 20.])

torch.linspace(start=20, end=10, steps=2)
# tensor([20., 10.])

torch.linspace(start=10., end=20., steps=3)
# tensor([10., 15., 20.])

torch.linspace(start=20, end=10, steps=3)
# tensor([20., 15., 10.])

torch.linspace(start=10., end=20., steps=4)
# tensor([10.0000, 13.3333, 16.6667, 20.0000])

torch.linspace(start=20., end=10., steps=4)
# tensor([20.0000, 16.6667, 13.3333, 10.0000])

torch.linspace(start=10, end=20, steps=4, dtype=torch.int64)
torch.linspace(start=torch.tensor(10),
               end=torch.tensor(20),
               steps=torch.tensor(4),
               dtype=torch.int64)
# tensor([10.0000, 13.3333, 16.6667, 20.0000])

torch.linspace(start=10.+6.j, end=20.+3.j, steps=4)
torch.linspace(start=torch.tensor(10.+6.j),
               end=torch.tensor(20.+3.j),
               steps=torch.tensor(4))
# tensor([10.0000+6.j, 13.3333+5.j, 16.6667+4.j, 20.0000+3.j])

torch.linspace(start=False, end=True, steps=4)
torch.linspace(start=torch.tensor(True),
               end=torch.tensor(False),
               steps=torch.tensor(4))
# tensor([0.0000, 0.3333, 0.6667, 1.0000])

torch.linspace(start=10, end=20, steps=4, dtype=torch.int64)
torch.linspace(start=torch.tensor(10),
               end=torch.tensor(20),
               steps=torch.tensor(4), dtype=torch.int64)
# tensor([10.0000, 13.3333, 16.6667, 20.0000])
Enter fullscreen mode Exit fullscreen mode

Top comments (0)