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関数を使うと良さそうです。以下リンク先を参照ください。
コメント