2016-08-21 106 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_variablessession.run相同z.assign(...

相關問題