1. 데이터 준비
MINIST 데이터셋
0부터 9까지 숫자를 손으로 그린 손글씨 데이터 7만장
가로 세로 28x28 사이즈의 정사각형 이미지
- 훈련 데이터 : 60,000개
- 테스트 데이터 : 10,000개
2. 입력값과 레이블 설정
입력값 : 손글씨 이미지
레이블 : 손글씨가 해당하는 숫자
3. 신경망 구조
- Flatten 레이어
이미지를 입력값으로 가질때 flatten 을 사용해서 벡터화 하는 과정이 필요함.
4. 신경망 구축 과정
from tensorflow import keras
import data_reader
# 에포크 결정
EPOCHS = 20
#데이터 읽기
dr = data_reader.DataReader()
# 인공신경망 제작
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(128,activation = 'relu'),
kears.layers.Dense(10,activation = 'softmax')
])
model.compile(optimizer = 'adam', metrics = ['accuracy'],
loss = 'sparse_categorical_crossentropy')
# 인공신경망 학습
콜백함수로 과적합 방지할 수 있음
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS,
validation_data=(dr.test_X, dr.test_Y),
callbacks=[early_stop])
5. 모델 테스트
# 모델에 훈련데이터를 넣고 결과 값 확인
import pandas as pd
pred= model.predict(dr.train_X[0:5])
pd.DataFrame(pred).round(2)
# 훈련 데이터 y 랑 확인해보기
dr.train_Y[0:5]
array([5, 0, 4, 1, 9], dtype=uint8)
값이 똑같은 것을 확인할수있음!!
'AI' 카테고리의 다른 글
[Python] 스팸 문자 분류 프로젝트 LSTM 사용해보기 (0) | 2021.12.26 |
---|---|
[Python] 자연어 처리 기초, 스팸 문자 분류 프로젝트 (0) | 2021.12.24 |
[Python]유전자 분석을 통한 암 진단 프로젝트 (0) | 2021.12.22 |
[tensorflow] 손실 함수란? (0) | 2021.12.17 |
[tensorflow] neural network 구성하기, 간단한 신경망 만들기 (0) | 2021.12.17 |