XOR

yeoni·2023년 6월 19일
0

딥러닝-Tensorflow

목록 보기
3/18

문제점 설명

  • OR : 둘 중에 하나라도 1이면 1
  • AND : 둘 다 1이면 1
  • XOR : 둘이 다를 때만 1 → 직선으로 해결할 수 없다. 즉, 뉴런 2개 필요

1. 데이터

import numpy as np

X = np.array([
    [0, 0],
    [1, 0],
    [0, 1],
    [1, 1]
])
y = np.array([[0], [1], [1], [0]])

2. 모델

  • 찾아야할 미지수 9개
  • activation : 활성화함수를 설정
    • linear : 디폴트 값으로 입력값과 가중치로 계산된 결과 값이 그대로 출력
    • sigmoid : 시그모이드 함수로 이진분류에서 출력층에 주로 쓰임
    • softmax : 소프드맥스 함수로 다중클래스 분류문제에서 출력층에 주로 쓰임
    • relu: Rectified Linear Unit 함수로 은닉층에서 주로 쓰임
  • 옵티마이저를 선정하고, 학습률을 선정
  • loss='mse': mean squared error
import tensorflow as tf

model = tf.keras.Sequential([
	# input_shape 입력을 2개 해서 'sigmoid'함수로 2개 출력
    tf.keras.layers.Dense(2, activation='sigmoid', input_shape=(2, )),
    # input를 넣지 않아도 자동으로 인식, 'sigmoid'함수로 1개 출력
    tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.1), loss='mse')
model.summary()
'''
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 2)                 6         
                                                                 
 dense_1 (Dense)             (None, 1)                 3         
                                                                 
=================================================================
Total params: 9
Trainable params: 9
Non-trainable params: 0
_______________________________
'''

3. fit 학습 & 결과

  • epochs : 지정된 횟수만큼 학습을 하는 것
  • batch_size : 한번의 학습에 사용될 데이터의 수를 지정
hist = model.fit(X, y, epochs=5000, batch_size=1)

model.predict(X)

import matplotlib.pyplot as plt
%matplotlib inline

# loss 상황
plt.plot(hist.history['loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epochs')
plt.show()


Reference
1) 제로베이스 데이터스쿨 강의자료
2) https://sevillabk.github.io/Dense/
3) https://amber-chaeeunk.tistory.com/23

profile
데이터 사이언스 / just do it

0개의 댓글