Coding Is My Life

코딩은 인생

파이썬 머신러닝

[머신러닝][Deep learning을 이용한 XOR문제해결]

산기대 컴공 2021. 2. 14. 23:57
728x90

우리가 흔히 알고있는 XOR문제를 Deep learning으로 훈련시켜 보겠다.

import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# 데이터 생성
x_XOR = np.array([[0,0],[0,1],[1,0],[1,1]])
y_XOR = np.array([0,1,1,0])

# 모델생성
model = Sequential()
model.add(Dense(2,input_shape = (4,2),activation = 'relu'))
model.add(Dense(6))
model.add(Dense(1,activation = 'sigmoid')) #출력층만 sigmoid 설정해줌

# 손실함수 최적화 함수 설정해줌
model.compile(loss = 'binary_crossentropy',optimizer = 'adam') #손실함수는 binary_crossentropy 사용

# 모델 훈련
model.fit(x_XOR,y_XOR,epochs=1000,batch_size=4)

# 예측
pred = model.predict(x_XOR)

# 결과 출력
result = []
for i in pred:
  if i >= 0.5:
    result.append(1)
  else:
    result.append(0)
result

Dense 레이어는 각 노드들을 연결해준다.

인자값으로는 (노드수, 입력받을 데이터shape(첫번째 레이어만 설정),activation(활성화 함수))

 

compile 함수는 loss 및 optimizer을 설정해줄 수 있다.  이진 분류 모델이므로 binary_crossentropy를 사용하였다.

 

그다음으로 fit함수와 predict 함수를 사용하여 훈련하고 예측하였다.

결과는 다음과 같았다.

loss: 0.0369

[0, 1, 1, 0]

예측이 잘 된것을 볼 수 있다.

728x90