Dot product
import numpy as np
u = np.random.uniform(0,5,(4,))
v = np.random.uniform(0,5,(4,))
sum_hadamard = np.sum(u*v)
np_dot = np.dot(u,v)
원소별로 곱하고 그 값을 더해주는 것이 dot product이다.
-> element-wise multiplication + sum
Deep Learning에서의 적용
import numpy as np
x = np.random.uniform(0,5,(4,))
w = np.random.uniform(0,5,(4,))
b = np.random.uniform(0,5,(4,))
affine = np.dot(x,w) + b
activation = 1/(1+np.exp(-affine))
affine은 x1w1 + x2w2 + x3w3 ... + b를 나타낸다.
Matrix-vector Multiplication
import numpy as np
M = np.random.uniform(0,5,(3,4))
u = np.random.uniform(0,5,(3,4))
mat_vec_mul = np.empty((3,))
for row_idx in enumerate(M):
mat_vec_mul[row_idx] = np.dot(row, u)
#mat_vec_mul[row_idx] = np.sum(row* u)
np_matmul = mp.matmul(M, u)
M N[i,j] = RiCj
numpy.matmul(x1, x2)
import numpy as np
M = np.random.uniform(0,5,(3,4))
u = np.random.uniform(0,5,(4,5))
mat_vec_mul = np.empty((3,5))
for M_row_idx in range(3):
for N_col_idx in range(5):
dot_prod = np.dot(M[M_row_idx,:],N[N_col_idx])
mat_mat_mul(M_row_idx, N_col_idx] = dot_prod
np_matmul = np.matmul(M, N)