双层神经网络比单层表现差

时间:2017-05-21 03:40:06

标签: machine-learning tensorflow neural-network

我正在学习TensorFlow,并尝试创建一个简单的双层神经网络。

教程代码https://www.tensorflow.org/get_started/mnist/pros从这个简单的网络开始,准确率达到92%:

W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)

我尝试用这个非常简单的网络替换它,添加一个新图层,但现在精确度下降到84% !!!

layer1_len = 10
w1 = weight_var([784, layer1_len])
b1 = bias_var([layer1_len])
o1 = tf.nn.relu(tf.matmul(x, w1) + b1)
w2 = weight_var([layer1_len, 10])
b2 = bias_var([10])
y = tf.nn.softmax(tf.matmul(o1, w2) + b2)

我得到了layer1_len的几个不同值以及不同数量的训练步骤的结果。 (请注意,如果我省略weight_varbias_var随机初始化,并将所有内容保持为零,则精度会降至接近10%,基本上不会比猜测好。)

我做错了什么?

1 个答案:

答案 0 :(得分:2)

没有错。问题是增加图层并不会自动意味着更高的准确性(否则机器学习会有所解决,因为如果你需要在图像分类器中获得更好的准确性,你只需要在开始时添加+1层并声称获胜)。

为了向您展示这不仅仅是您的问题 - 请看一下这篇高级论文:Deep Residual Learning for Image Recognition他们看到增加层数会降低评分功能(这并不重要)和他们的解决这个问题的架构(这很重要)。以下是其中的一小部分:enter image description here

  

更深的网络具有更高的训练误差,从而导致测试错误。