CV/cs231n

assignment 1 - KNN

알맹리 2021. 3. 22. 14:17

cs231n.github.io/assignments2020/assignment1/

 

 

링크 들어가서 과제 파일 다운 받아서 압축 풀고 

저거 인터넷에 링크 갖다 붙이면 알아서 압축 파일 다운 받아진다... 압축 풀어서 사진과 같이 폴더에 그대로 넣어주면 데이터 준비 끝 ㅋ (여기까지 20분 걸림 ㅡ.,ㅡ_)


 


1. Code

KNN은 knn.ipynb 파일과 assignment1/cs231n/classifiers 폴더에 있는 k_nearist_neighbor.py 파일을 수정해서 실행

 

k_nearist_neighbor.py 파일에서 작성해야 하는 코드들은 

 

1. test와 train 데이터의 거리를 3가지 버전으로 계산하는 함수

    - compute_distances_two_loops

    - compute_distances_one_loops

    - compute_distances_no_loops

 

2. test 이미지의 label을 예측하는 predict_labels 함수

 

knn.ipynb 파일에서 작성해야 하는 코드

cross validation

 

 

 

2. Inline Question 

 

Inline Question 1

위 그림에서 까만 부분은 test, train 사이의 거리가 짧은 곳, 하얀색 부분은 test, train 사이의 거리가 긴 곳

Q1. 행 전체가 밝은 색인 것은 왜?

Q2.열 전체가 밝은 색인 것은 왜?

제가 그렷어요 ㅎㅎ

A.위의 two loops 함수에서 dists 행렬을 return 하는데 dists는 [i번째 test, j번째 train]이기 때문에

Q1은 i번째 test가  다른 train들과의 거리가 멀 때 그래프에서 밝게 나타나고,

Q2는 j번째 train이 다른 test들과 거리가 멀 때 그래프에서 밝게 나타난다. 

 


Inline Question 2

Q. L1 distance같은 다른 거리 척도를 사용할 수도 있음. 보기 중에 L1 distance를 쓰는 것과 성능 차이가 없는 거리는 뭘까유 .??

 

A. 1, 3


Inline Question 3

Q. 보기 중에 kNN에 대해 맞는 것만 고르쇼잉 

 

1. k-NN의 decision boundary = linear

    > decision boundary는 데이터 사이의 거리에 의해서 결정되는데 같은 label이라도 해당 label의 데이터가 모든 train데이터랑 같은 비율의 거리를 가질 수는 없음. 

 

2. 1-NN의 train error는 항상 5-NN의 train error보다 낮다.

    > training error는 사용했던 데이터를 다시 학습된 모델에 적용하는 거라서 1-NN은 한번만 사용해서 항상 0이고 5는 그 이상이 될 수 있기 ㄸㅐ문에 맞음. 

 

3. 1-NN의 test error는 항상 5-NN의 test error보다 낮다.

    > test error는 새로운 데이터에 대해 측ㄱ정한 거라 problem dependent임 > 항상 그렇다고 보장할 수 없어서 틀림 

 

4. training set이 커질수록 test를 분류하는데 더 많은 시간이 필요하다.

    > k-NN은 예측할 때 모든 train 데이터에서 거리를 구하기 때문에 데이터셋 크기가 커지면 시간이 더 많이 필요함 맞음 !!

 

5. 다 틀림.

 

A. 2, 4

'CV > cs231n' 카테고리의 다른 글

assignment 1 - Softmax  (3) 2021.03.27
assignment 1 - SVM  (2) 2021.03.26