기본 콘텐츠로 건너뛰기

Tensorflow 기초

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})) 




댓글

이 블로그의 인기 게시물

블록체인 거래소 모니터링시스템 구축이야기(2/?) - 서버 아키텍처

  코인 거래소 모니터링시스템 구축이야기(2/?) 코인 거래소 모니터링 시스템 구축 (가칭 : 김프멈춰) 서버 구성 사용자가 확인할 서비스 페이지, 데이터 저장소에 대한 서버는 NAS 서버로 운영 일일 Data 크롤링 서버는 Cloud 서버 이용하여 운영 - 서비스페이지 및 데이터 저장소 (Nas 서버) : Docker container ubuntu 20.04 - 일일 크롤링 서버 (Cloud at Cost Cloud 서버) : CentOS 7 서버 아키텍처 서버 아키텍처 레퍼런스 빗썸 : https://apidocs.bithumb.com/ 업비트 : https://docs.upbit.com/ 홍콩 Bitfinex : https://docs.bitfinex.com/docs 몽고 DB 설치 : https://coterie.tistory.com/20 1. 개요 :  https://limdh3325.blogspot.com/2021/04/1.html 2. 서버 아키텍처 :  https://limdh3325.blogspot.com/2021/04/2.html 3. MongoDB 설치 :  https://limdh3325.blogspot.com/2021/04/3.html 4. 데이터 모델링 :  https://limdh3325.blogspot.com/2021/05/4.html 5. MongoDB 저장 :  https://limdh3325.blogspot.com/2021/06/5.html