※ Tensorflow1문법을 2로만 바꾸는것이기에, 코드분석 위주로 진행하고있습니다.
[Tensorflow1 링크종합] https://limitsinx.tistory.com/50
※ 이 전글에서 정리한 코드/문법은 재설명하지 않으므로, 참고부탁드립니다.
개념적인 부분은 하기 링크에 정리 되어있습니다!
https://limitsinx.tistory.com/31
[코드 전문]
import numpy as np
import tensorflow as tf
x_train = [1, 2, 3, 4]
y_train = [0, -1, -2, -3]
tf.model = tf.keras.Sequential()
# units == output shape, input_dim == input shape
tf.model.add(tf.keras.layers.Dense(units=1, input_dim=1))
sgd = tf.keras.optimizers.SGD(lr=0.1) # SGD == standard gradient descendent, lr == learning rate
tf.model.compile(loss='mse', optimizer=sgd) # mse == mean_squared_error, 1/m * sig (y'-y)^2
# prints summary of the model to the terminal
tf.model.summary()
# fit() executes training
tf.model.fit(x_train, y_train, epochs=200)
# predict() returns predicted value
y_predict = tf.model.predict(np.array([5, 4]))
print(y_predict)
[코드 분석]
x_train과 y_train 값들을 넣고 학습시켜서 예측해보는 코드입니다.
수식을 보니 y=-x+1이라는 선형식으로 트레이닝 데이터를 주고, 예측치가 잘맞는지 확인해보는 코드네요
① tf.model = tf.keras.Sequential() : 여기서 밑에 코드부터 모델링을 진행하겠다! 라는 뜻입니다.
② tf.model.add(tf.keras.layers.Dense(units=1,input_dim=1))
: 머신러닝 모델의 input갯수가 1개씩들어오죠??
1,2,3,4 차례대로 한개씩.. output도 0,-1,-2,-3 한개씩 차례대로 나옵니다.
즉, 한번에 들어가는 갯수는 1개 결과로 나오는 값도 1개인거죠
units = 1 : output으로 나오는 갯수
input_dim : input으로 들어가는 변수 갯수
입니다.
③ sgd=keras.optimizers.SGD(lr=0.1)
: Tensorflow1 부터 같이 공부해오신분들은, 대충 이것만 봐도 뭔지 아실꺼에요
Standard Gradient Descent로 cost function을 Optimizing 할것이며, Learning_rate는 0.1로 두겠다는 뜻입니다.
④ tf.model.compile(loss='mse',optimizer=''sgd')
Cost(loss) function은 Mean square Error(MSE)로, optimizer는 위에서 정리한 SGD로 하겠다는 코드입니다.
⑤ tf.model.summary()
: 이건 그냥 학습에 도움되는 코드는 아니고, 그냥 모델이 어떻게 생겼는지 터미널에 보여주는 코드입니다.
요런식으로 터미널창에 전체적인 Summary를 보여줍니다.
⑥ tf.model.fit(x_train,y_train,epochs=200)
요부분이, Tensorflow1에서 sess.run()하고, feed_dict={x:x_train, y:y_train} 해주던 부분입니다.
확실히 Tensorflow2로 오면서 코드가 간결해지긴 했습니다.
x_train과 y_train데이터로 200번의 학습을 진행한다는 뜻입니다.
※epoch : input layer부터 output layer까지 Forward, Backward를 진행하는것
[결과값(200번 학습)]
이런 결과값이 나오네요
5와 4를 input으로 넣었으면 y=-x+1에 해당하는 데이터들로 학습을 시켰으니, -4와 -3이 나오는게 가장 이상적인 학습결과겠죠??
200번 정도 학습시키니, -3.9979, -2.9989로 거의 정확한 값이 나오는것을 확인하실 수 있습니다!
'DeepLearning Framework & Coding > Tensorflow 2.X' 카테고리의 다른 글
[코드로 이해하는 딥러닝 2-6] - Deep Neural Network/XOR (0) | 2021.01.10 |
---|---|
[코드로 이해하는 딥러닝 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 |
[코드로 이해하는 딥러닝2-2] - 다중선형회귀(Multiple Linear Regression) (0) | 2021.01.06 |
댓글