Tensorflow 기초
Tensorflow 그래프 실행
-- 예제 1--
# 텐서플로 import import tensorflow as tf # Tensor라는 자료형으로 저장 # Tensor는 랭크(Rank)와 셰이프(Shape)로 구성 # 랭크는 차원의 수를 나타냄 # 0이면 스칼라, 1이면 벡터, 2이면 행렬, 3이상은 n차원 텐서 hello = tf.constant('hello, tensor') print(hello) # 텐서를 이용하여 다양한 연산이 가능 a = tf.constant(10) b = tf.constant(32) c = tf.add(a,b) print(c) # 하지만 출력을 하기 위해서는 그래프를 실행 해야함 # 그래프란 텐서들의 연산 모음이라 할수 있음 # 그래프 실행은 Session 안에서 이루어 져야 함 sess = tf.Session() print(sess.run(hello)) print(sess.run([a,b,c])) sess.close()
플레이스홀더와 변수
-- 예제 2--import tensorflow as tf # Placeholder 는 그래프에 사용할 입력값을 나중에 받기 위해 사용하는 매개변수 # 아래는 [?, 3] 같은 모양의 행렬이 만들어진다. X = tf.placeholder(tf.float32, [None,3]) print(X) # X 에 넣을 데이터로 [?,3]의 모양이 될수 있게 자료를 입력 x_data = [[1,2,3],[4,5,6]] # tf.random_normal() 함수는 정규분포의 무작위 값을 추출 해줌 W = tf.Variable(tf.random_normal([3,2])) b = tf.Variable(tf.random_normal([2,1])) # tf.matmul() 함수는 두 행렬의 곱셈을 해줌 expr = tf.matmul(X,W) + b sess = tf.Session() # tf.global_variables_initializer() 함수는 정의한 변수들을 초기화 sess.run(tf.global_variables_initializer()) print("===== x_data ======") print(x_data) print("===== W ======") print(sess.run(W)) print("===== b ======") print(sess.run(b)) print("===== expr ======") # feed_dict={} 은 Placeholder 인 X의 매개변수를 넣어주기 위해 사용 print(sess.run(expr, feed_dict={X: x_data})) sess.close()
선형회귀 모델 구현하기
-- 예제 3--# 텐서플로 import import tensorflow as tf
x_data = [1,2,3] y_data = [1,2,3] # tf.random_uniform([1],-1.0,1.0) ==> -1.0 에서 1.0 사이의 균등분포중 무작위값 W = tf.Variable(tf.random_uniform([1],-1.0,1.0)) b = tf.Variable(tf.random_uniform([1],-1.0,1.0)) # Placeholder 는 그래프에 사용할 입력값을 나중에 받기 위해 사용하는 매개변수 # float32 값의 Placeholder 정의 이름을 X,Y로 부여 X = tf.placeholder(tf.float32, name="X") Y = tf.placeholder(tf.float32, name="Y") # 선형 관계에 대한 수식 hypothesis = W * X + b # SSE와 비슷한 손실값을 구함 cost = tf.reduce_mean(tf.square(hypothesis-Y)) # 경사하강법을 이용하여 손실값을 최소화 하는 최적의 함수를 생성 # 학습률을 0.1로 정의 학습률이 크면 속도가 빠르고 너무 낮으면 속도가 느림 optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1) train_op = optimizer.minimize(cost) # Session을 생성하고 끝나면 자동으로 Session종료 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for step in range(100): # 1회차부터 100회차까지 위에 정의한 경사하강법을 이용하여 # 손신값을 넣어 최적의 선형 함수(hypothesis)를 구함 _, cost_val = sess.run([train_op,cost],feed_dict={X: x_data, Y: y_data}) print(step, cost_val, sess.run(W), sess.run(b)) #학습이 된 선형함수(hypothesis)에 예측하고 싶은 X값을 넣어 Y값 확인 print("\n======Test======") print("X: 5, Y:",sess.run(hypothesis, feed_dict={X: 5})) print("X: 2.5, Y:",sess.run(hypothesis, feed_dict={X: 2.5}))
댓글
댓글 쓰기