본문 바로가기

AI

(7)
[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의 수식을..
[cs231n] Lecture 3 | Loss Functions and Optimization Stanford의 유명 강의인 cs231n을 수강하고 정리한 글이다. 해당 강의는 유튜브에서 무료로 볼 수 있다. 3강 - https://www.youtube.com/watch?v=h7iBpEHGVNc&t=2096s 오늘은 3강인 Loss Functions and Optimization에 대해 정리해 보려 한다. ✏️ Recall 저번 시간에 KNN 알고지름과 Linear Classification 에 대해 알아보았다. 예시에서는 W (가중치) 값을 랜덤으로 정해놔서 정확도가 떨어졌었는데 이를 해결하기 위해 W값을 정해야한다. 그렇다면, W값은 어떻게 정할까? ✏️ Loss Function 직전 강의에서 나왔던 예시이다. 고양이는 자동차로 인식하였고, 개구리 또한 자동차로 인식한 것을 볼 수 있다. 여기..
[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..
[cs231n] Lecture 2 | Image Classification Stanford의 유명 강의인 cs231n을 수강하고 정리한 글이다. 해당 강의는 유튜브에서 무료로 볼 수 있다. 2강 - https://www.youtube.com/watch?v=OoUX-nOEjG0&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk&index=3 오늘은 2강인 Image Classification에 대해 정리해 보려 한다. ✏️ Image Classification Image Classification은 어떤 사진에 대해 정해진 Lables 중 하나를 고르는 것이다. 우선 컴퓨터는 우리가 보는 것처럼 사진을 보지 않는다. 그저 수많은 숫자의 배열로서 본다. 위와 같은 고양이 사진을 아래와 같은 숫자로 보는 것 근데 이렇게 숫자로 보면 각도, 조명 등에 따라 숫자가..
[cs231n] Lecture 1 | Introduction to Convolutional Neural Networks for Visual Recognition Stanford의 유명 강의인 cs231n을 수강하고 정리한 글이다. 해당 강의는 유튜브에서 무료로 볼 수 있다. https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk&index=1 오늘은 1강인 Introduction to Convolutional Neural Networks for Visual Recognition 에 대해 정리해 보려고 한다. ✏️ A brief history of vision 약 5억 4천만년 전, 생물의 종이 증폭되는 사건이 있었다. 이를 생명의 빅뱅이라 하며, 앤드류 파커(Andrew Parker)는 이때 최초의 눈이 생겨 났다고 말한다. (눈이 생김으로써 생물의 수가 늘었다고 말하..