본문 바로가기

프로그래밍 일반/딥러닝

[딥러닝] 케라스실습 02. XOR Function

01. 문제 정의

AND Gate는 하나의 Node만으로도 해결할 수 있는 문제였지만, XOR Function이 나오면서 여러개의 노드를 추가시켜야 했다.

 

02. 데이터셋 설정

#1. Numpy 가져오기
import numpy as np

#데이터 셋 설정
X = np.array([[0,0], [0,1], [1,0], [1,1]])
y = np.array([[0], [1], [1], [0]])

print(X)
print(y)

AND Function과 똑같지만 여기서는 출력값이 다르게 됩니다.

 

03. 모델 설정

# 케라스 패키지 불러오기
import Keras
from keras.model import Sequential
from keras.layers.core import Dense, Activation

print(keras.__version__)

#MLP 모델 설정

model = Sequential()
model.add(Dense(10, input_dim=2, activatino='relu')
model.add(Dense(1, activation='sigmoid')
print(model.summary())

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

여기서는 네트워크층에서 몇 개의 input과 output을 설정하느냐를 결정하기 때문에 Dense를 import했고, 어떤 함수를 쓰느냐에 따라 Activation을 import했습니다.

이진분류로 0과 1을 출력하기 때문에 binary_corssentropy를 loss함수로 두고, 최적화는 adam으로 했습니다. 

# 6. 학습시키기

batch_size = 1
epochs = 1000

model.fit(X, y, batch_size=batch_size, epochs=epchos, shuffle=True, verbose=1)

# 7. 모델 테스트하기
predict = model.predict(np.array([[1,1],]))
print(predict)