하루 노동시간 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

 

+ Recent posts