텐서플로우, 케라스로 크롬 공룡게임 AI 만들기 #3 - 데이터 학습 및 모델 만들기
머신러닝, 딥러닝

텐서플로우, 케라스로 크롬 공룡게임 AI 만들기 #3 - 데이터 학습 및 모델 만들기

반응형

 

2019/01/30 - [프로그래밍/딥러닝] - 텐서플로우, 케라스로 크롬 공룡게임 AI 만들기 #2 - 데이터 만들기

 

이제는 딥러닝의 핵심인 학습과 모델이다. 텐서플로우를 백엔드로 하는 케라스를 이용해 학습 및 모델을 만들었으며 인공신경망은 3개의 relu 은닉층을 가진다.

 

train.py

반응형
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import ModelCheckpoint, EarlyStopping

import pandas as pd
import numpy
import tensorflow as tf
import matplotlib.pyplot as plt

seed = 0
numpy.random.seed(seed)
tf.set_random_seed(seed)

df_pre = pd.read_csv('dino.csv', header=None)
df = df_pre.sample(frac=1)

dataset = df.values
X = dataset[:,0:6]
Y = dataset[:,6]

model = Sequential()
model.add(Dense(30,  input_dim=6, activation='relu'))
model.add(Dense(12, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy',
           optimizer='adam',
           metrics=['accuracy'])

model.fit(X, Y, epochs=1000, batch_size=200)

model.save('dino.h5')

print("\n Accuracy: %.4f" % (model.evaluate(X, Y)[1]))

 

코드는 위와 같다. 전 글에서 만든 dino.csv라는 데이터 파일을 이용해 dino.h5의 모델 파일을 출력하는 코드이다. 학습시간은 그리 오래 걸리지는 않았고 정확도는 대략 96%정도 나왔다. (과적합은 신경쓰지 않았다.) 사실 게임의 구조상 마지막 출력층의 구조를 sigmoid가 아니라 softmax 하는 것이 더 좋았을 것 같기도 하다. (결국 스페이스바를 누르냐 마냐의 결정이기 때문)

반응형
    # 테스트용