ass=torch.tensor([2, 4, 4]).type(torch.FloatTensor)
asas=torch.softmax(ass,0)
#结果
asas:tensor([0.2905, 0.3548, 0.3548])
num_zi = torch.sum(torch.pow(raw_wi_repeat - wi, 2), dim=0, keepdim=True) # [1,4]
num_zi = (-num_zi).exp()
num_zi = torch.where(num_zi < cc, dd, num_zi) ## a中小于cc的用dd替换,否则a替换,即不变
num_zero = (num_zi > 0).nonzero()
num_mu = torch.sum(num_zi, dim=1, keepdim=True) # [1]
aa = num_zi / num_mu
ab=torch.softmax(num_zi,1)
其中
num_zi:tensor([[0.9835, 0.9300, 0.9112, 0.9105, 0.9943, 0.9922, 0.9055, 0.9570, 0.9182,
0.9089, 0.9513, 0.9396, 0.9451]])
num_zi.shape: torch.Size([1, 13])
softmax把一堆实数的值映射到0-1区间,并且使他们的和为1.
max,就是,假如a>b,那么一直取a。没有第二种可能。
但有时会希望,经常取大的,小的偶尔能取到。那么就用softmax了。按照softmax计算取a和b的概率,概率和它本来的大小有关。