0

次のように変数を作成します。

x = tf.placeholder(tf.float32, shape=[None, D], name='x-input') # M x D
# Variables Layer1
#std = 1.5*np.pi
std = 0.1
W1 = tf.Variable( tf.truncated_normal([D,D1], mean=0.0, stddev=std, name='W1') ) # (D x D1)
S1 = tf.Variable(tf.constant(100.0, shape=[1], name='S1')) # (1 x 1)
C1 = tf.Variable( tf.truncated_normal([D1,1], mean=0.0, stddev=0.1, name='C1') ) # (D1 x 1)

しかし、何らかの理由で、テンソルフローは私の視覚化に余分な変数ブロックを追加します:

ここに画像の説明を入力

なぜこれを行うのですか、どうすれば停止できますか?

4

1 に答える 1

3

TF で名前を間違って使用している

W1 = tf.Variable( tf.truncated_normal([D,D1], mean=0.0, stddev=std, name='W1') )
                  \----------------------------------------------------------/
                                           initializer 
     \-------------------------------------------------------------------------/
                                 actual variable

したがって、コードは名前のない変数を作成し、初期化子 op に名前 W1を付けます。これが、名前付きのグラフに表示されるのは、名前が変更された初期化子W1はなく、名前W1が変更されたものである理由です(これは、名前のない ops に TF が割り当てる既定の名前であるため)。そのはずW1Variable

W1 = tf.Variable( tf.truncated_normal([D,D1], mean=0.0, stddev=std), name='W1' )

W1これにより、実際の変数の名前が付けられたノードが作成され、小さな初期化ノードがアタッチされます (ランダムな値をシードするために使用されます)。

于 2016-06-23T21:07:33.993 に答える