PyTorch torch.linspace 関数


Pytorch torch 参考手册Pytorch torch リファレンスマニュアル

torch.linspacePyTorch で等間隔シーケンステンソルを作成するための関数です。開始値から終了値までの等間隔の数値列を含む1次元テンソルを作成します。

とtorch.arange異なり、torch.linspace指定するのはステップサイズではなく要素数です。これは要素数を正確に制御する必要がある場合に非常に便利です。

関数定義

torch.linspace(start, end, steps, dtype=None, device=None, requires_grad=False)

パラメータ:

  • start(float): シーケンスの開始値。
  • end(float): シーケンスの終了値(含む)。
  • steps(int): シーケンス内の要素数。正の整数である必要があります。
  • dtype(torch.dtype, オプション): テンソルのデータ型を指定します。
  • device(torch.device, オプション): テンソルを格納するデバイスを指定します。
  • requires_grad(bool, オプション): 勾配を計算するかどうか。

戻り値:

  • torch.Tensor: 1次元テンソルを返します。

使用例

例1: 5つの等間隔ポイントを作成

実例

import torch

# 0から10までの等間隔シーケンスを5ポイントで作成
x = torch.linspace(0, 10, 5)

print(x)

出力結果:

tensor([ 0.0000,  2.5000,  5.0000,  7.5000, 10.0000])

例2: 10個のポイントを作成

実例

import torch

# -1から1まで、10個のポイントの等間隔シーケンスを作成
x = torch.linspace(-1, 1, 10)

print(x)

出力結果:

tensor([-1.0000, -0.7778, -0.5556, -0.3333, -0.1111,  0.1111,  0.3333,  0.5556,
         0.7778,  1.0000])

例3: ニューラルネットワークの学習率スケジューリングに使用

実例

import torch

# 学習率を0.1から0.001まで徐々に下げるシミュレーション
learning_rates = torch.linspace(0.1, 0.001, 100)

print("初期学習率:", learning_rates[0].item())
print("最終学習率:", learning_rates[-1].item())

出力結果:

初始学习率: 0.10000000149011612
最终学习率: 0.0010000000474974513

この例では、100個の学習率値を含むシーケンスを作成しました。これは学習率スケジューリングでよく使用されます。


torch.arange と torch.linspace の違い

  • torch.arange(start, end, step): ステップサイズに基づいてシーケンスを作成し、要素数は範囲とステップサイズによって決まります。
  • torch.linspace(start, end, steps): 要素数に基づいてシーケンスを作成し、間隔は範囲と要素数によって決まります。

Pytorch torch 参考手册Pytorch torch リファレンスマニュアル

その他の拡張