[numpy] Broadcasting
실제 선형대수 계산에서는 벡터나 행렬의 크기가 다르면 연산이 불가하다 하지만 numpy에서는 특정 조건을 만족한다면 크기가 달라도 연산이 가능해진다 특정 조건은1. 열과 행 중 하나(축들 중 하나)가 1이면 가능 (하나의 축을 확장시킬 수 있음)2. 차원의 짝이 맞아야 가능 예시를 보면 이해가 빠르다 첫 번째 예시는 1번을 만족한다. 이 때 사진처럼 확장되어 계산되는 것과 동일함 두 번째 예시도 1번을 만족한다 (1x3) 세 번째 예시는 1번을 만족하고 두 배열에서 모두 확장이 이루어졌다. import numpy as npa = np.array([0,1,2])b = np.array([5])print(a+b) # [5,6,7]a2 = np.array([[1,1,1],[1,1,1],[1,1,1]])b2 = ..
[numpy] numpy array와 list의 차이
우선 list는 우리가 알고 있는 파이썬의 배열의 역할 numpy array는 넘파이 라이브러리에서 제공되는 array이다 numpy array는 벡터와 같다. 그래서 선형대수에서 나오는 벡터 연산이 똑같이 적용된다. import numpy as nplist = [1,2,3,4]list2 = [1,2,3,4]print(list + list2) # [1,2,3,4,1,2,3,4]array1 = np.array([1,2,3,4])array2 = np.array([1,2,3,4])print(array1+array2) # [2,4,6,8] 바로 예시를 적용해보면 이해가 쉽다 list에서 + 연산은 두 개의 list가 이어지는데 numpy array는 element-wise (원소들 끼리의 연산)으로 연산이 ..
[Algorithm] Loss Function, Gradient Descent
이번 글은 cs231n 3강에서 다뤘던 수식이나 알고리즘을 직접 파이썬으로 구현해서 작성했다. ✍️ SVM Loss # simple loss function # 0 : cat, 1 : car, 2 : frog def SVM_loss(score): result = 0 for i in range(3): for j in range(len(score)): if i == j: continue else: result += max(0,score[i][j] - score[i][i] + 1) print(result) return result // 3 score = [[3.2,5.1,-1.7],[1.3,4.9,2.0],[2.2,2.5,-3.1]] print(SVM_loss(score)) 위 코드는 SVM loss의 수식을..
[Algorithm] L1, L2, NN, KNN, Linear Classifier
이번 글은 cs231n 2강에서 다뤘던 수식이나 알고리즘을 직접 파이썬으로 구현해서 작성했다. ✍️ L1 Distance import torch import numpy as np def l1_distance(arr1, arr2): tensor1 = torch.tensor(arr1, dtype=torch.float32) tensor2 = torch.tensor(arr2, dtype=torch.float32) distance = torch.sum(torch.abs(tensor1 - tensor2)) return distance arr1 = [[56,32,10,18],[90,23,128,133],[24,26,178,200],[2,0,255,220]] arr2 = [[10,20,24,17],[8,10,89,10..