하루 노동시간 1, 2, 3, 4, 5, 6, 7 에 대하여
25000, 55000, 75000, 110000, 128000, 155000, 180000 이라는 수익이 발생하였다는 데이터가 있을 경우
기계학습을 통해 8시간 일하였을때 얼마의 수익이 발생할 것인지에 대한 결과값을 얻을 수 있도록 해보자.
# 텐서플로우 import
import tensorflow as tf
# xData, yData 배열 선언
xData = [1, 2, 3, 4, 5, 6, 7]
yData = [25000, 55000, 75000, 110000, 128000, 155000, 180000]
# -100부터 100까지의 수 중 임의의 수를 W, b의 값으로 선언 (weight/bios)
W = tf.Variable(tf.random.uniform([1], -100, 100))
b = tf.Variable(tf.random.uniform([1], -100, 100))
# X와 y를 placeholder라는 틀을 만들어 설정 : 가장 대표적인 형태임 (앞으로 많이 보게 될 형태이므로 익숙해질것)
X = tf.compat.v1.placeholder(tf.float32)
Y = tf.compat.v1.placeholder(tf.float32)
# 가설 식을 모델로 제시해줌 - 이 예제에서는 일차방정식 형태로 모델을 제시해봄
H = W * X + b
# 비용함수를 정의
cost = tf.reduce_mean(tf.square(H - Y)) # (H - Y)제곱값의 평균값
# 경사 하강 알고리즘에서 얼마만큼 점프할지에 대해 정의해줌
# 변동폭을 0.01로 설정 / 너무 커도, 너무 적어도 안되는 값으로, 해당 값 설정이 굉장히 중요하게 작용되기도 함
a = tf.Variable(0.01)
# 경사하강법으로 최적값을 찾겠다는 설정
optimizer = tf.compat.v1.train.GradientDescentOptimizer(a)
# cost를 최소화하는 최적값을 train에 설정
train = optimizer.minimize(cost)
# 변수 초기화
init = tf.compat.v1.global_variables_initializer()
# tensorflow 객체에서 세션을 얻어와 sess라는 변수에 삽입
sess = tf.compat.v1.Session()
# 세션 초기화
sess.run(init)
# 학습 진행
for i in range(5001): # 5001번 진행
sess.run(train, feed_dict={X: xData, Y: yData}) # x, y 데이터 매칭
if i % 500 == 0: # 단순히 과정을 보기 위해 500번 간격으로 출력되도록 세팅, 진행과정의 일부를 볼 수 있게 해줌
print(i, sess.run(cost, feed_dict={X: xData, Y: yData}), sess.run(W), sess.run(b))
# 최종 결과 출력
print(sess.run(H, feed_dict={X: [8]})) # 최종 결과 모델인 H에 기존에 없었던 8이라는 노동시간을 넣어주었을때의 결과값 출력
50001 번 학습을 시켰으며 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000 번 학습에 대한 결과를 출력해주었다.
마지막으로는 8이라는 시간만큼 노동하였을 경우 얻게될 수 있는 예상 수익을 출력해준다.
해당 파일을 저장하고 해당 위치로 이동하여 실행해주면 다음과 유사한 형태로 출력되고 동일한 최종 출력이 발생하면 정상작동한 것이다.
의도하지 않은 문구가 함께 출력됨을 알 수 있는데, 이전 글에서도 언급한 바가 있으나 재언급하자면,
tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
위처럼 출력되는 메시지는 Error나 Warning이 아닌 Info성 메세지이나
만약 시간이 좀 걸리는 머신러닝을 진행할 경우 아래 페이지를 참조하여 해당 메시지가 출력되지 않도록 작업하는 것을 권장한다.
https://growingsaja.tistory.com/142
'About Data > Tensorflow with Python' 카테고리의 다른 글
[Python][Tensorflow][Jupyter] 실습 3 : 간단한 함수들 (26) | 2019.07.10 |
---|---|
[Python][Tensorflow][Jupyter] 실습 2 : placeholder (24) | 2019.07.09 |
[Python][Tensorflow][Jupyter] 실습 1 : constant, variable, init (0) | 2019.07.09 |
[Tensorflow][Python3.6] How to install from Python to Tensorflow (25) | 2019.07.08 |
Install Tensorflow in Centos 7 (Linux) (0) | 2019.05.08 |