擅长:python、mysql、java
<p>没有使用<code>pytorch</code>的经验,但是像这样的东西能起作用吗?在</p>
<pre><code>torch.einsum('ijk,abk->abc', (rnn_output, encoder_inputs))
</code></pre>
<p>它把点积放在最后一个轴上,然后再加上几个空轴。在</p>
<p>用纯numpy可以实现类似的功能(<code>pytorch 0.4</code>还没有<code>...</code>符号)</p>
^{pr2}$
<p>或使用<code>np.tensordot</code></p>
<pre><code>np.tensordot(rnn_output.numpy(), encoder_inputs.numpy(), axes=[2,2])
</code></pre>
<p>但在这里您将得到输出形状:<code>(1, 1, 10, 1)</code></p>
<p>你可以通过挤压和重新膨胀来解决这个问题(<em>几乎可以肯定,必须有更干净的方法来实现这一点</em>)</p>
<pre><code> np.tensordot(rnn_output.numpy(), encoder_inputs.numpy(), axes=[2,2]).squeeze()[..., None, None]
</code></pre>