티스토리 뷰

반응형

|개요

 

저번 포스팅에서는 Hello Tensorflow를 출력하는 소스를 만들어 보았는데요. 이번에는 각 상수의 합과 변수의 합을 구하는 프로그램을 만들어볼려고 합니다.

 

우선 기본적인 개념부터 설명하겠습니다.

 

이번에 사용할 명령어는 constant,  variable, placeholder 입니다.

 

constant은 저번 포스팅에서 설명한것처럼 변하지 않는 상수를 저장할때 사용합니다.

 

variable은  특정 환경에서 값이 변할 수 있을때 사용합니다. 

 

|constant 예제

 

저번 포스팅과는 다르게 constant 를 이용해서 덧셈을 해보도록 하겠습니다.

아래 코드는 constant형 2개를 만들어 더하고 세션을 통해 실행하는 예제입니다.

 

1
2
3
4
5
6
7
8
9
import tensorflow as tf
 
= tf.constant(1, tf.int32)
= tf.constant(2, tf.int32)
= tf.add(a, b)
 
sess = tf.Session()
 
print(sess.run(c))
cs

 

위 코드를 실행시키면 1과 2가 더해진 3이라는 결과값이 나오게 됩니다.

그런데 만약 위 코드를 세션없이 만들고 실행하게 된다면

 

1
2
3
4
5
6
7
import tensorflow as tf
 
= tf.constant(1, tf.int32)
= tf.constant(2, tf.int32)
= tf.add(a, b) 
 
print(c)
cs

 

결과값은 'Tensor("Add:0", shape=(), dtype=int32)' 로 나오게 됩니다. 이 결과값이 나온 이유는 Session이 실행되지 않았기 때문에 tf.add(a,b)가 실행되지 않았기 때문에 변수의 형태만 출력되는 것입니다.

 

위 소스에서 1과 2뒤에 tf.int32 라는게 붙어있는데 이는 constant의 기본 값이 float32이기 때문에 정수형으로 선언해준 것입니다.

 

 

|variable 예제 

 

이 예제는 위 코드와 마찬가지로 Variable형태의 변수 2개를 선언한 후 더하고 그 결과값을 출력하는 코드입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import tensorflow as tf
 
n1 = tf.Variable(5)
n2 = tf.Variable(10)
 
n3 = n1 + n2
 
init = tf.global_variables_initializer()
 
sess = tf.Session()
 
sess.run(init)
 
print(n3)
 
print(sess.run(n3))
cs

 

 

이번 예제는 앞 예제에 비해서 복잡하게 보이는데요.

 

우선 n1, n2를 Variable 변수로 선언한 후 5와 10이라는 값을 넣었습니다.

n3는 n1과 n2의 합으로 설정합니다.

 

init = tf.global_variables_initializer() 는 각 노드에 값을 넣어주는 명령어로 저 명령어를 쓰지 않는다면 각 노드에 Variable 값이 들어가지 않은 상태이기 때문에 오류가 나게 됩니다.

 

Session을 만들어주고 우선 각 노드에 값을 넣기 위해서 sess.run(init)를 먼저 실행합니다.

 

그 후 이번 소스에서는 print(n3)와 print(sess.run(n3)) 을 둘다 써놓았는데 실제로 실행해보면 n3는 실행되지 않은 상태기 때문에 데이터 형식이 출력되게 되고

sess.run(n3)는 n3의 실행값 즉 결과값이 출력되게 됩니다.

 

 


출처/참고

 

반응형
댓글