【Pytorch】確率分布(標準正規・一様・ベルヌーイ・多項)の実装コード
乱数を初期化する(seed)
以下のコードで引数を任意の数値に固定すると、毎回同じ値が生成される。
torch.manual_seed(34)
標準正規分布 (numpy.random.randn)
標準正規分布の確率密度関数は以下のように表される。
標準正規分布はPytorchを使うと以下のように実装できる。
# 標準正規分布 (numpy.random.randn)
print("torch.randn(正規分布):")
print(torch.randn(2))
print()
# 出力
# torch.randn(正規分布):
# tensor([ 1.4219, -0.2314])
[0, 1)の一様分布 (numpy.random.rand)
一様分布の確率密度関数は以下のように表される。
# [0, 1)の一様分布 (numpy.random.rand)
print("torch.rand(一様分布):")
print(torch.rand(2))
print()
# 出力
# torch.rand(一様分布):
# tensor([0.7322, 0.0119])
ベルヌーイ分布
ベルヌーイ分布とは、「成功か失敗か」「表か裏か」「勝ちか負けか」のように2種類のみの結果しか得られないような実験、試行(ベルヌーイ試行)の結果を0と1で表した分布のことを指す。
1である確率がpであるとき0である確率は1-pとなる確率分布。
ベルヌーイ分布の確率密度関数は以下で表される。
ベルヌーイ分布はPytorchを使うと以下のように実装できる。
# ベルヌーイ分布
probs = torch.rand((2, 3))
print("確率p:")
print(probs)
print()
print("torch.bernoulli(ベルヌーイ分布):")
print(torch.bernoulli(probs))
print()
# 出力
# 確率p:
# tensor([[0.0205, 0.6273, 0.5561],
# [0.9923, 0.6566, 0.8479]])
# torch.bernoulli(ベルヌーイ分布):
# tensor([[0., 0., 0.],
# [1., 1., 1.]])
多項分布
多項分布とは、二項分布を一般化した確率分布のこと。
多項分布の確率密度関数は以下の式で表される。
多項分布はPytorchを用いて以下のように実装できる。
# 多項分布 (np.random.multinomial)
probs = torch.tensor([0.2, 0.4, 0.4])
print("torch.multinominal(多項分布):")
print(torch.multinomial(probs, num_samples=10, replacement=True))
# 出力
# torch.multinominal(多項分布):
# tensor([1, 1, 0, 1, 1, 2, 2, 1, 0, 2])
以上が、Pytorchを用いた確率分布の実装。
人気記事
人気記事はこちら。