본문 바로가기
Python/Tensorflow

[We-Co] TensorFlow 변수,상수선언과 Session()

by 위기의코딩맨 2021. 7. 22.
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 TensorFlow 에서 중요한 변수 선언과 Session에 대해서 알아보도록 하겠습니다.

 

[변수,상수 선언]

두가지 방법이 있는데 변수텐서, 상수텐서로 생각하시면 될 것같습니다.

변수는 갱신이 가능하지만, 상수는 변하지 않는 값을 선언하는 것입니다.

 

* tf.variable - 변수 텐서 (업데이트가 가능한 객체)

* tf.constant - 상수 텐서 (업데이트 불가능한 객체)

 

그냥 숫자를 넣어서 수를 선언할 수 있지만, 행렬을 넣어 행렬 텐서를 생성할 수 있습니다. 

 

tf.Variable(tf.ones((2,2)))

 

선언이 가능하다.

그러나 상수로는 선언이 불가능하다.

 

[Session()] 

간단하게 얘기하면 TensorFlow에서 수행되는 계산 문맥을 하나로 묶는다고 생각하면 될 것 같습니다.

그러나 TensorFlow의 버전마다 사용 방법이 다릅니다.

1.x 버전에서는 Session을 호출해서 사용해야하지만

2x 버전에서는 Session이 내장되어 있어 바로 사용이 가능합니다.

저는 1.x 버전으로 작업을 진행했습니다.

또한 사용법도 여러가지가 존재합니다.

 

a = tf.constant(5)

b = tf.constant(1)

c = tf.add(a, b) 

 

sess = tf.Session()

sess.run(tf.global_variables_initializer())

print(sess.run(c))

sess.close()
 

위 코드는 a,b 에 5,1의 변수를 넣어주고

c는 두 a,b를 더하는 작업을 선언해 주었습니다.

먼저 Session()을 선언하고,  실행 전 모든 변수를 초기화 해주는 global_variables_initializer()로 초기화를 진행해 주고, 

Session안에 c 작업을 실행하도록 선언합니다.

그리고 마무리로 Session을 닫아주어야 합니다.

 

또다른 예제로는 

 

with tf.Session() as sess:
    a = tf.constant(1)
    b = tf.constant(2)
    c = tf.add(a,b)
    sess.run(c)
    print( sess.run(c) )

 

위 코드는 첫번째 예제랑 다른점은 with으로 묶은 방법인데

이 예제는 Session 초기화, 종료가 내장되어 있어 직접 선언을 해주지 않아도 된다는 장점이 있습니다.

 

오늘은 변수선언과 Session에 대해 알아봤습니다.

기초적인 사용법으로 조금 더 흥미를 느껴가고 있습니다.

앞으로도 흥미를 느껴야 할텐데

반응형