PyTorch torch.linspace 関数
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)
# 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)
# -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.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 リファレンスマニュアル