{:check ["true"]}

Index

4 Tensor Product

Tensor Product

In [1]:
import numpy as np

Vector Product

image.png

In [2]:
x = np.array([1,2,3,4])
y = np.array([2,3,4,5])

print("x * y =", x*y)
print("x @ y =", x@y)
print("sum(x*y)=", np.sum(x*y))
x * y = [ 2  6 12 20]
x @ y = 40
sum(x*y)= 40

image.png

In [ ]:
 

Matrix Product

image.png

image-2.png

In [3]:
x = np.random.randint(10, size=(3, 4))
x
Out[3]:
array([[5, 2, 3, 2],
       [6, 8, 2, 1],
       [7, 1, 5, 3]])
In [4]:
y = np.random.randint(10, size=(4, 2))
y
Out[4]:
array([[8, 7],
       [1, 0],
       [1, 2],
       [5, 6]])
In [5]:
x @ y
Out[5]:
array([[55, 53],
       [63, 52],
       [77, 77]])

Tensor Product

Let:

  • $ x : (m_1, m_2, n_1, n_2) $

  • $ y : (n_1, n_2, k_1, k_2, k_3) $

Then:

  • $x\cdot y : (m_1, m_2, k_1, k_2, k_3)$

It's defined as:

$$(x\cdot y)(i_1, i_2, j_1, j_2, j_3) = x[i_1, i_2, :, :] \cdot y[:,:,j_1, j_2, j_3]$$
In [7]:
x = np.random.randint(10, size=(3, 2, 1))
x
Out[7]:
array([[[6],
        [8]],

       [[2],
        [7]],

       [[7],
        [2]]])
In [8]:
y = np.random.randint(10, size=(2, 1, 2))
y
Out[8]:
array([[[2, 3]],

       [[6, 3]]])
In [13]:
np.tensordot(x, y).shape
Out[13]:
(3, 2)