본문 바로가기
DeepLearning Framework & Coding/Tensorflow 2.X

[코드로 이해하는 딥러닝 2-6] - Deep Neural Network/XOR

by 노마드공학자 2021. 1. 10.

※ Tensorflow1문법을 2로만 바꾸는것이기에, 코드분석 위주로 진행하고있습니다.

[Tensorflow1 링크종합] https://limitsinx.tistory.com/50

 

 

※ 이 전글에서 정리한 코드/문법은 재설명하지 않으므로, 참고부탁드립니다.

코드만 해석하고 넘어가기에 다소 불친절한 글 일수 있습니다..

   개념적인 부분은 하기 링크에 따로 정리해두어, 참조 부탁드립니다.

https://limitsinx.tistory.com/38

 

[코드로 이해하는 딥러닝 11] - Deep Neural Network/XOR

[코드로 이해하는 딥러닝 0] - 글연재에 앞서 https://limitsinx.tistory.com/27 [코드로 이해하는 딥러닝 1] - Tensorflow 시작 https://limitsinx.tistory.com/28 [코드로 이해하는 딥러닝 2] - Tensorflow 변..

limitsinx.tistory.com

 

[코드 전문]

 

import tensorflow as tf

import numpy as np

 

x_data = np.array([[00], [01], [10], [11]], dtype=np.float32)

y_data = np.array([[0], [1], [1], [0]], dtype=np.float32)

 

tf.model = tf.keras.Sequential()

tf.model.add(tf.keras.layers.Dense(units=2input_dim=2))

tf.model.add(tf.keras.layers.Activation('sigmoid'))

tf.model.add(tf.keras.layers.Dense(units=1input_dim=2))

tf.model.add(tf.keras.layers.Activation('sigmoid'))

tf.model.compile(loss='binary_crossentropy'optimizer=tf.optimizers.SGD(lr=0.1),  metrics=['accuracy'])

tf.model.summary()

 

history = tf.model.fit(x_data, y_data, epochs=10000)

 

predictions = tf.model.predict(x_data)

print('Prediction: \n', predictions)

 

score = tf.model.evaluate(x_data, y_data)

print('Accuracy: ', score[1])

 

 

[코드 분석]

본격적으로 hidden layer를 추가하며 Deep한 Neural Network에 입문하는 장입니다.

 

x_data와 y_data는 array형식으로 받았으며,

 

tf.model = tf.keras.Sequential()로, 학습모델 구성을 시작하겠다고 선언합니다.

 

① tf.model.add(tf.keras.layers.Dense(units=2, input_dim=2))

: input layer로써 x_data가 2차원 array이기에 input을 2차원으로 받고, output도 2차원으로 내보내는 모습입니다.

 

② tf.model.add(tf.keras.layers.Activation('sigmoid'))

: input layer의 활성함수를 sigmoid로 통과시키는 모습입니다.(Binary Classification)

 

③ tf.model.add(tf.keras.layers.Dense(units=1,input_dim=2)

: 해당 코드는 Deep하진 않고 input layer와 output layer를 1개씩 설정해보는 것입니다.

input layer의 output dimension이 2차원이므로, 그 다음 layer의 input도 동일하게 2차원으로 맞추어 주어야합니다.

다음, y_data의 차원수와 동일하게 최종 output은 1차원 값이 되도록 설정해놓은 코드입니다.

 

④ predictions = tf.model.predict(x_data)

: 학습시킨 x_data로 학습된 모델링을 통해 y값을 추측해보는 단계입니다. 

 

⑤ score=tf.model.evaluate(x_data,y_data)

: 학습시킨 model에 대해 x_data와 y_data를 넣어 얼마나 학습이 잘되었나 검토해보는 코드로, 대부분 100%에 근접하게 나옵니다.(모델이 잘못되지 않은 이상)

 

 

[결과값(10000번 학습)]

10000번 학습한 결과, x_data는 모두 y_data의 실제값에 맞게 추측하여 정확도 1의 모습을 보여주고 있습니다.

 

학습한 데이터로 검증을 하는것이기에 크게 의미있는 코드는 아니지만,

 

layer를 본인이 원하는대로 늘렸다 줄였다 할 수 있다는 점에서 분석을 해보았습니다.

 

 

댓글