TensorFlow
텐서플로우(Tensorflow) 기본 문법 - Variable
GDYOON
2017. 5. 9. 16:24
텐서플로우 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() 였다 )
반응형