구글에서 오픈소스로 제공하는 라이브러리, 가장 널리 사용되고 있는 머신러닝 라이브러리 중 하나
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# ex) 학습용 데이터 확인
print(x_train.shape)
>>> (60000, 28, 28) # 28*28 크기의 숫자 이미지가 6만장
Train / Test / Validation set의 차이
⏩ 일반적으로 데이터 셋은 6:2:2의 비율로 Train, validation, test set으로 나뉜다.
Test / Validation set의 차이점
검증용 데이터 | 시험용 데이터 |
---|---|
학습을 시키진 않지만 학습에 관여 | 학습에 전혀 관여하지 않고 최종 성능 평가만을 위해 사용 |
✔✔✔ 🤔
숫자 손글씨 판단할 땐 채널 수 때문에 재설정했는데 가위바위보에선 안한 이유는?
손글씨를 판단할 땐 채널 수가 따로 설정되지 않은 상황이었지만 가위바위보 딥러닝 네트워크를 설정할 땐 받는 값에 채널 수가 설정되어 있어 따로 처리하지 않아도 됐다.
✔✔✔🤔
초반에 지나치게 낮은 정확도가 나온 이유는?
test set의 number of data를 따로 설정하지 않아 기본값 1500으로 들어가서 자꾸 값이 예상한 결과와 크게 차이가 났던 것 같다. training set을 300개로 했을 때보다도 낮은 결과가 나와서 왜 이런가 했는데 300으로 설정하니 33보다 높고, 비교적 일정한 값으로 개선된 결과가 나옴.
✔✔✔🤔
epoch란?
모든 학습 데이터 셋을 학습하는 수, 같은 데이터 셋이어도 가중치가 달라지기 때문에 모델이 추가적인 학습을 할 수 있다.
높일 수록 무작위 가중치에 대한 계산을 통해 적합한 파라미터를 찾을 확률이 높아지지만, 지나치게 높일 경우 과적합이 일어날 수 있다.
코드 자체는 숫자 손글씨 판단할 때 사용된 코드를 재활용 해서 괜찮았지만 그렇다고 코드를 제대로 이해한 건 아니다.
뭔가 기본적인 설명 없이 (딥러닝이란 무엇인지, 머신러닝과는 어떤 차이인지, 어떤 알고리즘을 어떤 원리로 사용하는지 등등..) 다짜고짜 만들어봐라! 하는 느낌이라 당황스러웠다. 물론 노드에서 코드를 이해하는 건 좋지만 고통받진 말고(?) 흥미를 느끼는 쪽이라고 하긴 하는데.. 그냥 혼란만 가중된 기분이다. 우선 위에 정리해둔 기본 개념이라도 챙겨 가야겠다..