반응형
지난 포스팅
https://jamjamzo.tistory.com/114
Part1. 모델구축
2장 컴퓨터 비전 소개
모델이 사진 속 사물을 인식하는 방법을 배워, 모델은 사진이 무엇이 있는지 볼 수 있다.
2.1 의류 아이템 인식하기
2.1.1 패션 MNIST 데이터셋
- 패션 MNIST의 샘플 개수, 이미지 크기, 클래스 개수는 숫자 MNIST(0~9 손글씨)와 동일
- 전부 흑백 이미지
- 픽셀 값은 0~255 사이
- 그리드의 크기: 28 x 28
2.2 컴퓨터 비전을 위한 뉴런
- 각 이미지는 0과 255 사이의 784개(28 x 28) 값으로 구성. 즉, X값(데이터값)
- Y값, 데이터셋에 있는 이미지의 종류 10가지
- 이미지마다 784개의 X값이 있고, 0~9 사이의 값이 Y값 => Y = mX + c
- m : 가중치, c: 절편
- 신경망을 훈련할 때, 각 뉴런은 랜덤하게 초기화된 가중치와 절편(m과 c)를 갖는다.
- 그 다음 각 뉴런의 출력값을 더해 하나의 값을 얻는다.
- 출력 층에 있는 모든 뉴런에서 이 작업이 수행되고, 뉴런 0은 이 픽셀들이 레이블 0에 해당할 확률을 출력하고 뉴런 1은 레이블 1에 대한 출력을 만드는 식이다.
- 10개의 레이블이 있으므로 랜덤하게 초기화할 경우 정답의 약 10%를 맞춘다.
- 손실 함수와 옵티마이저가 에폭마다 뉴런 안에 파라미터를 조정해 이 10%를 향상시킨다.
- 따라서 시간이 지나면 컴퓨터는 무엇이 신발이고 드레스인지 구별하는 법을 배우게 된다.
2.3. 신경망 설계
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
- Sequential 모델은 여러 개의 층을 가질 수 있다.
- 첫번째 Flatten은 뉴런의 층이 아니라 입력을 위한 크기를 지정한다.
- 입력은 28 x 28 크기의 이미지지만 한 줄로 펼친 숫자처럼 다룬다.
- 즉, 2D 배열 -> 1D 배열 벡터로 변환
- Dense는 뉴런의 층
- 뉴런 128개 지정(은닉 층; hidden layer)
- 왜 128? 사용할 뉴런의 개수를 지정하는 일정한 규칙은 없다. 뉴런의 개수가 너무 많으면 파라미터가 더 많아지므로 실행 속도가 느려진다.
- 과대적합(overfiting): 뉴런이 많으면 훈련 데이터를 잘 학습하는 신경망이 만들어지지만, 본 적이 없는 데이터 처리는 버거워할 수 있다.
- 하이퍼파라미터 튜닝(hyperparameter tuning): 적절한 값을 선택하려면 약간의 실험이 필요하다. 머신러닝에서 제어하는데 사용되는 값으로 훈련 또는 학습되는 뉴런의 내부 가중치(파라미터와 반대)이다.
- 활성화 함수(activation function): 층의 각 뉴런에 적용되는 함수
- 렐루(ReLU): 단순히 0보다 큰 값을 반환하는 간단한 함수. 다음 층의 계산에 음수값을 전달하고 싶지 않으므로 if-then 코드를 쓰는 대신 ReLU 활성화 함수를 사용할 수 있다.
- 출력층(Output Layer): 클래스가 10개이므로 10개의 뉴런을 둔다. 입력 픽셀이 해당 클래스에 속할 확률을 출력한다. 출력 층의 뉴런에서 출력된 값의 합이 1이 되도록 만든다.
2.3.1 전체 코드
https://colab.research.google.com/drive/1bK_M3KsQIv2HPlq2_8W29btEkPvGQ8jP?usp=sharing
반응형
'그냥, 코딩' 카테고리의 다른 글
[개발자를 위한 머신러닝&딥러닝] 말과 사람을 구별하는 CNN 만들기 (0) | 2022.10.17 |
---|---|
[개발자를 위한 머신러닝&딥러닝] 고급 컴퓨터 비전: 이미지에서 특징 감지하기 (0) | 2022.10.11 |
[개발자를 위한 머신러닝&딥러닝] 텐서플로(Tensorflow) 사용하기 (0) | 2022.10.04 |
[개발자를 위한 머신러닝&딥러닝] 텐서플로(Tensorflow) 소개 (0) | 2022.10.04 |
OpenCV 라이브러리를 jupyter에 설치 및 실습 (0) | 2021.12.16 |