18번째 수업(0522)
데이터셋 - 표준/개발용( ex. iris data)
MNIST : 0~9 의 숫자를 필기체로 저장해놓은 것
MNIST 는 총 4개의 파일로 구성되어 있다.
학습용(6만개)
평가용( t 는 test, 10 k = 10000을 뜻함)
위에서 image 는 그림을 뜻하고 label 은 클래스(숫자)를 뜻한다.
idx3, idx1 에서 1은 1byte 를 , 3은 3byte 를 뜻한다.
mnist 데이터셋에서
1번째 : 매직넘버(4 byte)
2번째 : 이미지 개수(4 byte)
3번째 : 이미지 행수(4 byte, 28행)
4번째 : 이미지 열수(4 byte, 28열)
위 그림에서 총 byte 용량은
9,912,422 bytes 는 압축되기 전 47,040,016 bytes 이고
구성은 4 + 4 + 4 + 4 + (784 x 60000 x 1) 로 총 47,040,016 바이트로 구성된다.
INDIM, H1DIM, H2DIM, OUT 일 때 w1, w2, w3 총 3개의 층으로 되어있다.
print(x.shape)
print(yt.shpae)의 출력 결과
torch.Size([12, 26])
torch.Size([12, 4])
→ 26개로 이루어진 픽셀의 데이터가 12개
입력 디멘션 12개, 클래스가 4개 라는 의미
weight 를 정하는 부분 w = torch.randn(IMDIM ...)
바이어스 4개 생성하는 부분 b = torch.randn(OUTDIM ...)
에러 계산하는 부분 floss = nn.MSELoss()
최적화 함수 optimizer = optim.SGD(...)
네트워크, 로스, 최적화 이 3개는 무조건 정의해야함
loss = floss(z, yt)
loss.backward()
→ loss 에 에러를 구하고 역전파를 구한다.
과제 - 내일까지 4개의 파일 중 하나의 파일을 입력받고 6543 입력하면 6543번째 숫자 이미지, 클래스를 출력시키기
(파일의 뷰어 만들기)
(파이썬에 matplot 를 import 한 다음에 image show 라는 라이브러리를 이용하면 디스플레이에 그림 출력)
ex) 선택할 파일 : train-images-idx3-ubyte.gz
선택할 이미지 : 6543
출력 결과 : 숫자 이미지, 클래스값