• 기본적인 Python과 Numpy 라이브러리 사용법을 익히고, 머신 러닝 모델의 기본적인 수학적 구성 요소를 작성해보는 과제입니다.

Exercise 2 - basic_sigmoid

  • 시그모이드 함수를 math 라이브러리를 이용하여 구현한 것입니다.
  • 일반적으로 행열을 처리할 수 있는 np를 쓰는데, 그 반대의 경우(math)를 보여줌으로써 np를 강조하는건가 봐요.
1
2
3
4
5
import math

def basic_sigmoid(x):
    s = 1/(1+math.exp(-x))
    return s

Exercise 3 - sigmoid

  • np를 이용해 구현합니다.
1
2
3
def sigmoid(x):
    s = 1/(1+np.exp(-x))
    return s

Exercise 4 - sigmoid_derivative

1
2
3
4
def sigmoid(x):
    s = 1/(1+np.exp(-x)) 
    ds = s*(1-s)
    return ds

Exercise 5 - image2vector

  • reshape() 차원인자에 한개의 -1을 전달할 수 있습니다. -1로 전달하면 나머지 차원인자로 부터 차원을 추론하여 동작합니다.
1
2
3
4
5
def image2vector(image):
    v = image.reshape(image.shape[0] * image.shape[1] * image.shape[2], 1)
    # v = image.reshape(-1, 1)
    # v = np.reshape(image, (image.shape[0] * image.shape[1] * image.shape[2], 1))
    return v

Exercise 6 - normalize_rows

1
2
3
4
def normalize_rows(x):
    x_norm = np.linalg.norm(x, axis=1, keepdims = True)
    x = np.divide(x, x_norm)
    return x

Exercise 7 - softmax

  • axis는 0과 1에 따라 행으로 동작(column-wise)할건지 열(row-wise)로 동작할것인지, keepdims는 브로드캐스팅 유무입니다
1
2
3
4
5
def softmax(x):
    x_exp = np.exp(x)
    x_sum = np.sum(x_exp, axis=1, keepdims = True)
    s = np.divide(x_exp, x_sum)
    return s

Exercise 8 - L1

1
2
3
def L1(yhat, y):
    loss = np.sum(abs(np.subtract(yhat, y))) 
    return loss

Exercise 9 - L2

1
2
3
def L2(yhat, y):
    loss = np.sum(np.dot(np.subtract(yhat, y),np.subtract(yhat, y))) 
    return loss