スポンサーリンク

PyTorch配列Tesonrを任意の最小値・最大値に収めるtorch.clamp

PyTorch

PyTorch配列Tesonrを任意の最小値・最大値に収めるには、clamp関数を使う。引数に最小値と最大値を指定すると、範囲外の値は最小値か最大値に置き換えられます。

外れ値を修正したい場合などに便利です。

torch.clampの使い方

第一引数inputに処理する配列Tesonr、第二引数minに最小値、第三引数maxに最大値を指定する。

import torch

a = torch.tensor([-1.0, -0.4, 0.0, 0.3, 0.9])
print(a)
# tensor([-1.0000, -0.4000,  0.0000,  0.3000,  0.9000])

print(torch.clamp(input=a, min=-0.5, max=0.5))
# tensor([-0.5000, -0.4000,  0.0000,  0.3000,  0.5000])

torch.clampを使うことで、max以上の値はmaxに、min以下の値は、minに置き換わる。

最小値、最大値どちらかのみ指定すれば、指定した方のみ任意の値に収まる。

print(torch.clamp(input=a, min=-0.5))
# tensor([-0.5000, -0.4000,  0.0000,  0.3000,  0.9000])

print(torch.clamp(input=a, max=0.5)
# tensor([-1.0000, -0.4000,  0.0000,  0.3000,  0.5000])

最小値、最大値にTensor配列を指定すると、要素ごとに任意の値に収まる。

limit = torch.tensor([-1.2, -0.5, 0.1 , 0.5, 1.0])

print(torch.clamp(input=a, min=limit))
# tensor([-1.0000, -0.4000,  0.1000,  0.5000,  1.0000])

print(torch.clamp(input=a, max=limit))
# tensor([-1.2000, -0.5000,  0.0000,  0.3000,  0.9000])

全コード

import torch

a = torch.tensor([-1.0, -0.4, 0.0, 0.3, 0.9])
print(a)

print(torch.clamp(input=a, min=-0.5, max=0.5))

print(torch.clamp(input=a, min=-0.5))

print(torch.clamp(input=a, max=0.5))

print(torch.clamp(input=a, min=-0.5))

print(torch.clamp(input=a, max=0.5))

Numpyの配列で同じことをするには

Numpyで同じことをしたい場合は、clip関数を使うと良さそうです。以下リンク先を参照ください。

関連記事、参考資料

コメント