Python
1import torch 2from torch.distributions import Categorical 3 4# 40%と60%で確率を設定 5probs = torch.tensor([0.4, 0.6]]) 6# カテゴリカル分布クラスをインスタンス化 7m = Categorical(probs) 8# サンプリング 9action = m.sample() 10log_prob = m.log_prob(action)
この確率分布クラスは毎回サンプリング値が異なりますが、具体的に、どのような計算を行っているのしょうか。参考ページPROBABILITY DISTRIBUTIONS - TORCH.DISTRIBUTIONS
multinomialを使っているので基本的には並べ替えを変えているようですが、それだけでしょうか。
PyTorch
1 def sample(self, sample_shape=torch.Size()): 2 sample_shape = self._extended_shape(sample_shape) 3 param_shape = sample_shape + torch.Size((self._num_events,)) 4 probs = self.probs.expand(param_shape) 5 probs_2d = probs.reshape(-1, self._num_events) 6 sample_2d = torch.multinomial(probs_2d, 1, True) 7 return sample_2d.reshape(sample_shape) 8
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/08 11:44