title: Understanding tensordot
body: <p>After I learned how to use <code>einsum</code>, I am now trying to understand how <code>np.tensordot</code> works.</p>
  
  <p>However, I am a little bit lost especially regarding the various possibilities for the parameter <code>axes</code>.</p>
  
  <p>To understand it, as I have never practiced tensor calculus, I use the following example:</p>
  
  <pre><code>A = np.random.randint(2, size=(2, 3, 5))
  B = np.random.randint(2, size=(3, 2, 4))
  </code></pre>
  
  <p>In this case, what are the different possible <code>np.tensordot</code> and how would you compute it manually?</p>