일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코딩테스트후기
- HTML예제
- HTML
- raspberrypi
- C언어
- 삼성sw역량테스트b형
- html input tag
- ubuntu18.04
- html input
- 멀티캐스트
- docker
- 삼성SW역량테스트
- RAID개념설명
- 다항회귀예제
- Raid
- 다항회귀
- Linux
- html태그정리
- Ubunrtu
- 웹페이지 기본
- tensorflow
- 개념설명
- multicast
- RIAD0
- 라즈베리파이
- jupyter
- html환경구축
- TensorflowServer
- RAID구축
- CSS
- Today
- Total
Easy ways
[Tensorflow] 간단한 인공지능 모델 생성 및 확인 본문
안녕하세요!
오늘은 텐서플로우에서 제공하는 예제를 사용해서 간단한 모델을 생성하고 테스트를 해보려고 합니다.
MNIS 데이터를 이용하여 AI 모델을 만들어보겠습니다.
간단한 예제이고 AI 모델 구조를 살펴보기에 좋기에 가져와 봤습니다.
구글 코랩같은 곳에서 한줄 씩 넣으며 테스트 해보시기를 바랍니다.
전체 코드
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
# model.summary()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
scores = model.evaluate(x_test, y_test, verbose=2)
print("정확도 : %.2f %%" % (scores[1]*100))
코드 설명
import tensorflow as tf
위 코드는 텐서플로우 라이브러리를 불러오고
라이브러리 이름을 tf라고 칭한다는 뜻입니다.
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
tf.keras.datasets.mnist
위 코드의 의미는 tensorflow 에서 제공하는 데이터 셋인 mnist 를 불러온다는 의미입니다.
Mnist 는 손글씨 숫자에 관한 이미지 데이터 셋으로 현재 교육용으로 가장 많이 사용되고 있습니다.
각 이미지는 빨강, 파랑 및 녹색 채널에 대해 각각 32x32 픽셀로 표시됩니다.
각 픽셀의 값은 0-255입니다.
(x_train, y_train), (x_test, y_test) = mnist.load_data()
위 코드는 데이터에서 객체의 데이터와 라벨값을 불러오는 코드입니다.
-
x_train : 손글씨 숫자 '이미지' 대입
-
y_train : 이미지가 의미하는 숫자 대입(라벨값)
학습 데이터의 갯수는 60000개이며, 모델을 학습할때 사용합니다.
-
x_test : 손글씨 숫자 '이미지' 대입
-
y_test : 이미지가 의미하는 숫자 대입(라벨값)
테스트 데이터의 갯수는 10000개이며 모델의 예층 정확도 평가시 사용
x_train, x_test = x_train / 255.0, x_test / 255.0
위 코드로 데이터 값을 0–1로 정규화합니다.(흑백으로 나누는 거죠)
MNIST Database
이제 데이터가 준비되었으니 모델을 구성할 차례 입니다!
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax')
])
model.summary()
tf.keras.models.Sequential
위 함수를 통해 뉴럴네트워크 레이어를 생성할 수 있습니다. 이 함수에 포함된 레이어들로 모델을 구성해줍니다.
tf.keras.layers.Flatten(input_shape=(28, 28))
위 함수는 쉽게 말해 입력레이어를 평평하게 만들어 주는 함수입니다.
다차원 배열을 일차배열로 만들어 주는 것이죠
28 x 28 배열을 입력으로 받아 1차원 배열로 변환해줍니다.
tf.keras.layers.Dense(128, activation='relu'),
히든레이어의 노드개수는 128개, 활성화 함수는 relu 입니다.
이 레이어에서 입력은 가중치 값과 곱해지고 더해집니다.
학습이 진행되며 이 가중치 값이 수정되어 지며 정답을 찾아가는 겁니다.
tf.keras.layers.Dropout(0.2),
오버피팅 방지한 것으로 이전레이어의 출력을 20% 0으로 만듭니다.
tf.keras.layers.Dense(10, activation='softmax')
숫자는 0부터 9까지 총 10개의 라벨값을 가지므로
모델의 출력은 10개입니다.
활성화 함수는 softmax로 다중 클래스 분류 문제의 출력층에서 주로 쓰이는 모델입니다.
이 모델을 그림으로 표현하면 다음과 같습니다.
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
완성된 모델을 컴파일 해줍니다
model.fit(x_train, y_train, epochs=5)
model.fit(x_train, y_train, epochs=5)
Mnist 데이터 셋에서 훈련데이터 셋을 사용하고
epochs를 5로 설정하여 모델을 5번 반복하여 훈련합니다.
scores = model.evaluate(x_test, y_test, verbose=2)
print("정확도 : %.2f %%" % (scores[1]*100))
model.evaluate(x_test, y_test, verbose=2)
MNIST의 테스트 데이터를 사용하여 모델 정확도를 계산해 줍니다.
코드를 실행하면 그림과 같이 출력됩니다.
정확도가 97.73%나 되는군요!
인공지능 모델 학습은 위와 같은 구조에서 크게 벗어나지 않습니다.
데이터 셋을 구성하고
모델을 구성한뒤
학습하고 테스트하는 것이죠!
이상입니다. 감사합니다.