테스트
과소/과대 적합
- 과소적합(underfitting): 실제 패턴보다 모형이 단순
- 과대적합(overfitting): 실제 패턴보다 모형이 복잡
데이터 분할
- 데이터를 Training과 Testing으로 분할 (보통 8:2 또는 9:1)
- 파라미터를 추정하는데는 많은 데이터가 필요하므로 Training을 크게
- Testing은 모형들의 성능을 구별할 정도만 되면 충분하므로 작게
- Training에 과적합되면 Testing에서 성능이 낮아짐
- Training과 Testing의 데이터가 섞이지 않도록 유의
과적합의 진단
- training set에서는 성능이 높지만 testing set에서는 성능이 낮을 경우
- → overfitting 되었을 가능성이 높음
- → 모형의 복잡도를 낮추는 방향으로 구조/하이퍼파라미터를 조정
- training set에서도 성능이 낮을 경우
- → underfitting이 되었을 가능성이 높음
- → 모형의 복잡도를 높이는 방향으로 구조/하이퍼파라미터를 조정
테스트
테스트 데이터 뽑기
x_test_binary, y_test_binary = filter_binary(x_test, y_test, 0, 1)
평가
model.evaluate(x_test_binary, y_test_binary)
직접 손글씨 입력해보기
- 그림판에서 직접 손글씨 입력
- 크기 조정(픽셀, 28, 28, 가로세로 비율 X)
- 오른쪽 하단 확대/축소로 확대
- 색 채우기 (검은색)
- 브러시(색 1 → 흰 색)
- 검은 바탕에 흰 글씨로 0 또는 1
- hand.png로 저장
손글씨 이미지 불러오기
import cv2 as cv
x = cv.imread('data/hand.png', cv.IMREAD_GRAYSCALE) # 이미지 불러오기
x = np.expand_dims(x, axis=0) # 배치 차원 추가
model.predict(x) # 예측
차원의 추가 방법들
- expand_dims
np.expand_dims(x, 0) # 0번 차원 확장 - new_axis
x[np.newaxis, 0:28, 0:28] # 0번 차원에 새 축, 1, 2차원은 0~28번값
x[np.newaxis, :, :] # 0번 차원에 새 축, 1, 2차원은 모든 값
x[np.newaxis, ...] # 0번 차원에 새 축, 다른 차원은 모든 값 - reshape
x.reshape(1, 28, 28) # 모양을 1, 28, 28로 변경
퀴즈
사용자 정보 입력
퀴즈를 시작하기 전에 이름과 소속을 입력해주세요.