PyTorchのモジュラー演算
説明
モジュラー演算とは、剰余演算とも呼ばれ、$a$を$b$で割った時の余りを返す関数のことを言う。PyTorchには二つの関数がある。
torch.remainder(a,b)
torch.fmod(a,b)
どちらも$a$を$b$で割った時の余りを返すことは同じだが、結果が少し異なる。具体的な式に興味があれば、remainder
とfmod
の公式文書を参照してほしい。簡単に言うと、remainder
は余りの符号が割る数$b$と同じになるようにされており、mod
は余りの符号が割られる数$a$と同じになるようにされている。
>>> torch.remainder(torch.tensor([-3.1, 3.1, 1, -0.5, 2.1]), 2)
tensor([0.9000, 1.1000, 1.0000, 1.5000, 0.1000])
>>> torch.remainder(torch.tensor([-3.1, 3.1, 1, -0.5, 2.1]), -2)
tensor([-1.1000, -0.9000, -1.0000, -0.5000, -1.9000])
>>> torch.fmod(torch.tensor([-3.1, 3.1, 1, -0.5, 2.1]), 2)
tensor([-1.1000, 1.1000, 1.0000, -0.5000, 0.1000])
>>> torch.fmod(torch.tensor([-3.1, 3.1, 1, -0.5, 2.1]), -2)
tensor([-1.1000, 1.1000, 1.0000, -0.5000, 0.1000])
環境
- OS: Windows11
- Version: Python v3.9.13, torch==1.13.1