【问题标题】:All weights are all zero (not changing) in MNIST sampleMNIST 样本中的所有权重都为零(不变)
【发布时间】:2017-08-25 02:13:44
【问题描述】:

我已经在MNIST 上使用 softmax 函数训练和评估了第一个 TF 示例,结果符合预期,约为 92%。但是,我想查看每次迭代的权重和偏差。

查看代码,我发现在每次迭代时两者都初始化为零,这可能不是一种有效的初始化方式:

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

另一个问题被建议用一个小的 stddev 截断它们:

W = tf.Variable(tf.truncated_normal([784, 10],stddev=0.001))
b = tf.Variable(tf.truncated_normal([10],stddev=0.001))

我也以这种方式进行了测试,但在这两种情况下,权重都没有变化(第一种情况全为零,第二种情况非零),而偏差只是在变化的情况。

MWE:

print "Iteration:", '%04d' % (iteration + 1), "cost=", "{:.9f}".format(avg_cost)
print "Bias: ", b.eval()
print "Weights: ", W.eval()

这是前几张照片的结果:

Iteration: 0001 cost= 29.819621965
Bias:  [-0.38608965  0.36391538  0.1257894  -0.25784218  0.0603136   1.46654773
 -0.11613362  0.62797612 -1.63218892 -0.25228417]
Weights:  [[ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 ..., 
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]]
Iteration: 0003 cost= 20.975814890
Bias:  [-0.71424055  0.5187394   0.24631855 -0.44207239 -0.07629333  2.24541211
 -0.20360497  1.08866096 -2.26480484 -0.39810511]
Weights:  [[ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 ..., 
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]]

有趣的是,我在 tensorboard 查看器中看到了一些非零权重:

有人可以解释为什么我会看到这种行为和不匹配吗?我想在 TensorFlow 中查看每一层的权重(在这种情况下我们只有一个)并检查它们的值。

【问题讨论】:

  • 你的训练循环是什么样的?你确定你正在运行训练操作吗?

标签: tensorflow tensorboard mnist softmax


【解决方案1】:

当我们打印一个 numpy 数组时,只会打印初始值和最后一个值,并且在 MNIST 的情况下,这些权重索引不会更新,因为图像中的相应像素保持不变,因为所有数字都写入数组的中心部分或图像不沿边界区域。从一个输入样本到另一个输入样本变化的实际像素是中心像素,因此只有那些相应的权重元素会得到更新。要比较训练前后的权重,您可以使用 numpy.array_equal(w1, w2) 或者,您可以通过执行以下操作打印整个 numpy 数组: import numpy numpy.set_printoptions(threshold='nan') 或者,您可以逐个元素进行比较,并仅打印那些相差一定阈值的数组值

【讨论】:

  • 谢谢,@Gaurav。你能解释一下为什么偏见会改变吗?另外,请提供一些我可以在这里试用的功能代码。您能否详细说明您提到的这三个选项并使用 StackOverflow 的 {} 更好地呈现它们?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多