2017-08-24 17 views
1

通常、クラス内のニューラルネットワークを介して関数を定義し、別のクラスで関数のパラメータまたは変数リストが必要な場合は、テンソルフローtf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope="function name")、それは私には便利でよく知られていますが、他にも効率的な方法がたくさんあると思います。2つの異なるニューラルネットワークから2つの変数リストを取得する方法

しかし、いくつかのケースでは、我々はF(x) = F(NN_1(x), NN_2(x))を言う、二つの異なるニューラルネットワーク上に構築された関数を定義する必要があり、その後、別のクラスでは、NN_1()NN_2()両方の二つの変数のリストを取得するための正しい方法は何ですか?ここでtf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope="function nameを使用すると、NN_1NN_2の2つの変数リストを含むF(x)の混合変数リストが得られることは明らかです。名前スコープのツリー内

def function() 
    with tf.name_scope(function): 
     with tf.name_scope(subfunction_1): 
      neural_network_1 
     with tf.name_scope(subfunction_2): 
      neural_network_2 

答えて

1

あなたが個々のスコープ変数にアクセスすることができます。

vars_1 = tf.get_collection(
    tf.GraphKeys.TRAINABLE_VARIABLES, scope="function_name/subfunction_name_1") 
vars_2 = tf.get_collection(
    tf.GraphKeys.TRAINABLE_VARIABLES, scope="function_name/subfunction_name_2") 
関連する問題