【Pytorch】確率分布(標準正規・一様・ベルヌーイ・多項)の実装コード

スポンサーリンク

【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)

一様分布の確率密度関数は以下のように表される。

https://bellcurve.jp/statistics/course/8013.html
# [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.]])

多項分布

多項分布とは、二項分布を一般化した確率分布のこと。

多項分布の確率密度関数は以下の式で表される。

wikipedia

多項分布は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を用いた確率分布の実装。

人気記事

人気記事はこちら。

CUDA、cuDNNのバージョンをターミナルで調べるコマンド
【Pytorch】テンソルを連結する方法(cat・stack)
【Pytorch】テンソルの次元を追加・削除する方法【dim】
【Protobuf】"TypeError: Descriptors cannot not be created directly."を解決する【solved】
【Python】Tensorflowをダウングレード・アップグレードするコマンド
タイトルとURLをコピーしました