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)

但由于某种原因,tensorflow 在我的可视化中添加了额外的变量块:

在此处输入图像描述

为什么要这样做,我该如何阻止它?

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而是重命名的初始化程序,而应该是你的W1被称为Variable(因为这是 TF 分配给未命名操作的默认名称)。它应该是

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

它将创建以W1实际变量命名的节点,并将附加一个小的初始化节点(用于为其播种随机值)。

于 2016-06-23T21:07:33.993 回答