DEV Community

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

Posted on • Edited on

logspace in PyTorch

Buy Me a Coffee

*Memos:

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

*Memos:

  • logspace() 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.
  • The 4th argument with torch is base(Optional-Default:10.0-Type:int, float or bool). *The 0D tensor of int, float, complex or bool 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, dtype of 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.logspace(start=10., end=20., steps=0) torch.logspace(start=10., end=20., steps=0, base=10.) torch.logspace(start=20., end=10., steps=0) torch.logspace(start=20., end=10., steps=0, base=10.) # tensor([])  torch.logspace(start=10., end=20., steps=1) torch.logspace(start=10., end=20., steps=1, base=10.) # tensor([1.0000e+10])  torch.logspace(start=20., end=10., steps=1) torch.logspace(start=20., end=10., steps=1, base=10.) # tensor([1.0000e+20])  torch.logspace(start=10., end=20., steps=2) torch.logspace(start=10., end=20., steps=2, base=10.) # tensor([1.0000e+10, 1.0000e+20])  torch.logspace(start=20., end=10., steps=2) torch.logspace(start=20., end=10., steps=2, base=10.) # tensor([1.0000e+20, 1.0000e+10])  torch.logspace(start=10., end=20., steps=3) torch.logspace(start=10., end=20., steps=3, base=10.) # tensor([1.0000e+10, 1.0000e+15, 1.0000e+20])  torch.logspace(start=20., end=10., steps=3) torch.logspace(start=20., end=10., steps=3, base=10.) # tensor([1.0000e+20, 1.0000e+15, 1.0000e+10])  torch.logspace(start=10., end=20., steps=4) torch.logspace(start=10., end=20., steps=4, base=10.) # tensor([1.0000e+10, 2.1544e+13, 4.6416e+16, 1.0000e+20])  torch.logspace(start=20., end=10., steps=4) torch.logspace(start=20., end=10., steps=4, base=10.) # tensor([1.0000e+20, 4.6416e+16, 2.1544e+13, 1.0000e+10])  torch.logspace(start=10., end=20., steps=4, base=100.) # tensor([1.0000e+20, 4.6416e+26, 2.1544e+33, inf])  torch.logspace(start=20., end=10., steps=4, base=100.) # tensor([inf, 2.1544e+33, 4.6416e+26, 1.0000e+20])  torch.logspace(start=10, end=20, steps=4, base=10, dtype=torch.int64) torch.logspace(start=torch.tensor(10), end=torch.tensor(20), steps=torch.tensor(4), base=torch.tensor(10), dtype=torch.int64) # tensor([10000000000, # 21544346900318, # 46415888336127912, # -9223372036854775808])  torch.logspace(start=10.+6.j, end=20.+3.j, steps=4) torch.logspace(start=torch.tensor(10.+6.j), end=torch.tensor(20.+3.j), steps=torch.tensor(4), base=torch.tensor(10.+0.j)) # tensor([3.1614e+09+9.4871e+09j, # 1.0655e+13-1.8725e+13j, # -4.5353e+16+9.8772e+15j, # 8.1122e+19+5.8475e+19j])  torch.logspace(start=False, end=True, steps=4, base=False) torch.logspace(start=torch.tensor(False), end=torch.tensor(True), steps=torch.tensor(4), base=torch.tensor(False)) # tensor([1., 0., 0., 0.]) 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)