2016-08-21 3 views
1

나는 텐서 흐름을 이해하려고 노력하고 있는데, 처음에는 연산과 변수를 그래프에 추가 한 다음 세션에서 이러한 연산을 수행해야한다는 것을 이해하고 있습니다. 그런데이 코드에서 initialize_all_variables() 메서드를 사용할 필요가없는 이유는 무엇입니까? init = tf.initialize_all_variables()을 추가하고 sess.run(init)을 추가하려했지만 잘못되었습니다. 이것은 초기화없이 왜 작동합니까 ??언제 Tensorflow에서 변수를 초기화해야합니까?

import tensorflow as tf 
import numpy as np 
x = tf.placeholder('float', [2,3]) 
y = x*2 
z = tf.Variable([[1,1,1],[1,1,1]], name = "z") 
with tf.Session() as sess: 
    x_data = np.arange(1,7).reshape((2,3)) 
    z.assign(x_data) 
    res = sess.run(y, feed_dict = {x:x_data}) 
    print(res.dtype, z.dtype, z.get_shape())` 

답변

1

초기화되지 않은 값은 읽을 수 없습니다. 위의 경우 z을 읽지 않으므로 초기화 할 필요가 없습니다.

variables.py에서 당신이 initialize_all_variables is a group node connected to all initializers

def initialize_variables(var_list, name="init"): 
... 

return control_flow_ops.group(
     *[v.initializer for v in var_list], name=name) 

z.initializer 보면 볼에 당신이 보는 경우에, 당신은 그것이 Assign 노드의 볼 수 있습니다. 따라서 TensorFlow에서 tf.initialize_all_variables을 평가하는 것은 session.runz.assign(...

과 동일하게 수행하는 것과 같습니다.
관련 문제