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 파일에서 작성해야 하는 코드
2. Inline Question
위 그림에서 까만 부분은 test, train 사이의 거리가 짧은 곳, 하얀색 부분은 test, train 사이의 거리가 긴 곳
Q1. 행 전체가 밝은 색인 것은 왜?
Q2.열 전체가 밝은 색인 것은 왜?
A.위의 two loops 함수에서 dists 행렬을 return 하는데 dists는 [i번째 test, j번째 train]이기 때문에
Q1은 i번째 test가 다른 train들과의 거리가 멀 때 그래프에서 밝게 나타나고,
Q2는 j번째 train이 다른 test들과 거리가 멀 때 그래프에서 밝게 나타난다.
Q. L1 distance같은 다른 거리 척도를 사용할 수도 있음. 보기 중에 L1 distance를 쓰는 것과 성능 차이가 없는 거리는 뭘까유 .??
A. 1, 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 |