擅长:python、mysql、java
<p>我能想到的让你理解的最简单的方法是:假设给你一个形状为<code>(s1, s2, s3, s4)</code>的张量,正如你所提到的,你希望沿最后一个轴的所有项的总和为1。</p>
<pre><code>sum = torch.sum(input, dim = 3) # input is of shape (s1, s2, s3, s4)
</code></pre>
<p>那么您应该将softmax称为:</p>
<pre><code>softmax(input, dim = 3)
</code></pre>
<p>为了便于理解,可以将形状<code>(s1, s2, s3, s4)</code>的4d张量看作形状<code>(s1*s2*s3, s4)</code>的2d张量矩阵。现在,如果希望矩阵在每一行(轴=0)或每一列(轴=1)中包含和为1的值,那么可以简单地调用2d张量上的<code>softmax</code>函数,如下所示:</p>
<pre><code>softmax(input, dim = 0) # normalizes values along axis 0
softmax(input, dim = 1) # normalizes values along axis 1
</code></pre>
<p>你可以看到史蒂文在他的<a href="https://stackoverflow.com/a/49039412/5352399"><strong>answer</strong></a>中提到的例子。</p>