데이터 형태 바꾸기
인공지능의 목표는 숫자의 특성(숫자 자체)을 구분하는 것이 아님
이미지의 레이블을 더 잘 구분할 수 있는 방법으로 알려줄 필요가 있음.
결국 수치형 데이터를 범주형 데이터로 변환하는 것임
즉, 0~9 사이를 숫자가 아닌 비슷한 모양을 가진 패턴을 찾기 위한 원-핫 인코딩이 필요
모델 학습시키기
신경망을 잘 학습시키려면
학습한 신경망이 분류한 값과 실제값의 오차부터 계산해야 함
오차를 줄이기 위해 경사하강법 사용
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
compile 함수 사용 규칙
= 학습 방법 정하는 명령어
1) loss 방법 설정
binary는 둘 중 하나, categorical은 다중 분류, 여러개 중 하나
2) optimizer(최적화) 오차 줄이는 방법 설정
여기서는 adam이 사용됨, adamW...etc 등
3) metrics 학습 결과를 어떻게 확인할 것인가 설정
정확도로 모델의 학습 결과 확인
정확도는 예측값과 실제값 비교한 후 해당 비율 알려줌
model.fit(X_train, Y_train, batch_size=128, epochs=10, verbose=0)
fit 함수 사용 규칙
= 학습시키는 명령어
1) 입력할 데이터 정하기
우리는 X_train, Y_train으로 학습할 거임
2) batch_size 정하기(옵션)
인공지능 모델이 한 번에 학습하는 데이터의 수
3) epochs 정하기
학습 시킬 횟수
에포크는 모든 데이터를 1번 학습하는 것을 의미
epochs=10이면 모든 데이터를 10번 학습해라.
4)verbose(옵션)
verbose=0 아무 표시 없음
verbose=1 에포크별 진행 사항
verbose=2 에포크별 학습 결과
정확도 체크
score = model.evaluate(X_test, Y_test)
print('Test score: ', socre[0])
print('Test accuracy: ', score[1])
evaluate 함수는 모델의 정확도를 평가, 두 가지 결과 보여준다.(오차, 정확도)
파라미터 2가지가 필요하다.
첫 번째 파라미터는 테스트할 데이터
두 번째 파라미터는 테스트할 데이터의 정답
X_test, Y_test 데이터 입력하여 얻은 두 가지 결과값인 오차, 정확도를 score 변수에 넣음
loss값: 0이면 오차가 없고 1이면 오차가 큼
accuracy값: 모델이 예측한 값이 얼마나 정확한가를 0~1사이의 값으로 보여줌
1에 가까울수록 정답을 많이 맞춘 것
'IT' 카테고리의 다른 글
머신러닝 4th (0) | 2024.10.23 |
---|---|
머신러닝 3rd (0) | 2024.10.20 |
머신러닝-1st (0) | 2024.10.20 |
리눅스 마스터 2급 1차 2403회 (0) | 2024.08.15 |
[아이리포] SQLD 14일 합격 SQLD 모든 것 (0) | 2024.06.28 |