※ Tensorflow1문법을 2로만 바꾸는것이기에, 코드분석 위주로 진행하고있습니다.
[Tensorflow1 링크종합] https://limitsinx.tistory.com/50
※ 이 전글에서 정리한 코드/문법은 재설명하지 않으므로, 참고부탁드립니다.
코드만 해석하고 넘어가기에 다소 불친절한 글 일수 있습니다..
개념적인 부분은 하기 링크에 따로 정리해두어, 참조 부탁드립니다.
https://limitsinx.tistory.com/38
[코드 전문]
import tensorflow as tf
import numpy as np
x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], 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=2, input_dim=2))
tf.model.add(tf.keras.layers.Activation('sigmoid'))
tf.model.add(tf.keras.layers.Dense(units=1, input_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를 본인이 원하는대로 늘렸다 줄였다 할 수 있다는 점에서 분석을 해보았습니다.
'DeepLearning Framework & Coding > Tensorflow 2.X' 카테고리의 다른 글
[코드로 이해하는 딥러닝 2-8] - Data Pre-processing (0) | 2021.01.12 |
---|---|
[코드로 이해하는 딥러닝 2-7] - Deep and Wide Neural Network(DWNN) (0) | 2021.01.11 |
[코드로 이해하는 딥러닝 2-5] - Softmax Regression(multiple classification) (0) | 2021.01.09 |
[코드로 이해하는 딥러닝 2-4] - Logistic Regression(sigmoid) (3) | 2021.01.08 |
[코드로 이해하는 딥러닝2-3] - .txt(.csv)파일 불러오기 (0) | 2021.01.07 |
댓글