2016-08-21 13 views
1

私はテンソルの流れを理解しようとしていますが、最初にopsを作成して変数をグラフに追加してからセッションでこれらの操作を実行する必要があることを理解しています。 次に、このコードで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を評価することは、と同じです。z.assign(...

関連する問題