【发布时间】: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