튜토리얼 · 4
이미지 분류기
이번엔 진짜 데이터셋이다. CIFAR-10, 32×32 사진 열 종류. 이미지를 눈으로 보고, 작은 합성곱 신경망을 당신의 GPU 에서 학습시키고, 정확도를 한 수가 아니라 클래스별로 읽는다.
이 튜토리얼은 데이터가 필요하다. 부분집합은 저장소에 없다 —
여기서는 바이너리가 git 밖에 있고,
vendor/pyodide 와 같은 규칙이다.
한 번 만들면 된다: python3 site/fetch_data.py (CIFAR 바이너리가
없으면 --download 를 붙인다). 학습 2,000 장·시험 500 장이고 JPEG 로
약 1MB 다. 그래서 픽셀이 원본과 완전히 같지는 않다 — 아래 정확도는
"배우는가" 로 읽어야지 논문의 수와 견주면 안 된다.
1 · 데이터부터 본다
모델보다 먼저. 비전 프로젝트에서 잘못되는 것의 절반이 여기서 보인다 — 채널 순서, 값 범위, 한 칸 밀린 라벨.
2 · 작은 합성곱 신경망
합성곱·풀링 두 단, 그리고 선형 머리 — 5강의 CNN 과 같은 모양이고 입력 채널만 셋이다. CIFAR 은 더 큰 망이 더 잘하지만, 이것은 보는 동안 학습되도록 고른 크기다.
3 · 학습
DataLoader 에서 64 장씩, Adam, 교차 엔트로피. 수보다 곡선을 보라 —
보고 싶은 것은 기울기이고, 위에서 평평해지면 학습률이 가장 먼저 손볼 것이다.
4 · 클래스별 정확도
한 수는 어느 클래스를 못 가르는지를 감춘다. 고양이와 개가 흔한 짝이고, 이 크기에서는 배와 비행기도 자주 그렇다 — 둘 다 넓고 평평한 배경 위의 작은 물체라서.
5 · 실수들
열여섯 장, 모델이 뭐라고 했는지와 함께. 빠른 시작에서 한 것과 같은 동작이고 어느 크기에서든 쓸모가 있다 — 실수는 성공보다 데이터에 대해 더 많이 말해 준다.
이것이 보여주지 않는 것. 2,000 장에 여덟 에폭은 CIFAR 결과가
아니다. 이 저장소의 벤치는 전체 데이터로 ResNet-18 을 돌려 열 에폭에 64.6% 를
적는다. 방금 잰 것은 데이터·합성곱·autograd·옵티마이저로 이어지는 사슬 전체가
브라우저 탭 안, 당신의 GPU 에서, 설치 없이 돈다는 사실이다.