티스토리 뷰

텐서플로우 Variable 에 대해서 알아보겠다.

아래의 코드는 각 변수에 5, 10, 3 을 할당하며 기본적으로 텐서의 정보가 반환이 될 것이라고 예상하는 코드이다.

그리고 이를 출력한다면?


1
2
3
4
5
6
7
var1 = tf.Variable([5])
var2 = tf.Variable([10])
var3 = tf.Variable([3])
 
var4 = var1 * var2 + var3
 
print(var4)
cs


var4 에 해당하는 텐서의 정보가 출력되어야 할 것이라 생각하고 돌려봤지만 수많은 알 수 없는 오류가 뿜어져나온다.

이게 무엇이란 말이냐 ㅜㅜ..

그렇다 Variable은 텐서가 아니라 하나의 객체가 되는 것이다. 즉 Variable 클래스의 인스턴스가 생성되는 것이고  해당 인스턴스를 그래프에 추가시켜주어야 한다.



따라서 어떻게 코드를 수정해야 하느냐면..


1
2
3
4
5
6
7
8
9
10
11
12
13
var1 = tf.Variable([5])
var2 = tf.Variable([10])
var3 = tf.Variable([3])
 
var4 = var1 * var2 + var3
 
init = tf.global_variables_initializer()
 
sess.run(init)
print(var4)
 
result = sess.run(var4) 
print(result)
cs


출력결과는 다음과 같다.
Tensor("add_7:0", shape=(1,), dtype=int32)
[18]

이와 같이 수정해주어야 한다. 실제 global_variables_initializer() 를 사용하여야 한다. 이 자체가 연산이 된다.
global_variables_initializer() 를 호출하기 전에 그래프의 상태는 각 노드에 값이 아직 없는 상태를 의미한다.
따라서 해당 함수를 사용해주어야 Variable 의 값이 할당 되는 것이고 텐서의 그래프로써의 효력이 발생하는 것이다.
(이전 버전에서는, .initialize_all_variables() 였다 )





반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함