Pytorch:2d Tensor每行的Softmax

时间:2018-05-12 07:28:56

标签: pytorch

我需要我的神经网络在A动作上输出N个分布。每个分布都应该通过softmax。那么每一行的总和应该显然是1,整个层的总和应该是N.在PyTorch中是否有这样的功能?

2 个答案:

答案 0 :(得分:0)

使用softmax并指定行作为操作的维度

import torch.nn.Functional as F

x = ...# your N x A input
x_distribution = F.softmax(x, dim = 1)

答案 1 :(得分:0)

我认为使用转置很容易解决。这是我的解决方案:

data = torch.Tensor([[-0.4275,  2.0973],
    [ 0.4284,  0.9128],
    [ 0.1397,  1.3663],
    [-0.4221,  2.0760]])

res = torch.softmax(data.T, dim=0).T

这里有:

tensor([[0.0741, 0.9259],
    [0.3812, 0.6188],
    [0.2268, 0.7732],
    [0.0760, 0.9240]])