SRo*_*mes 2 machine-learning neural-network tensorflow
我正在学习 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)
Run Code Online (Sandbox Code Playgroud)
我尝试用这个非常简单的网络替换它,添加一个新层,但准确率现在下降到 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)
Run Code Online (Sandbox Code Playgroud)
我通过几个不同的值layer1_len
以及不同数量的训练步骤得到了这个结果。(请注意,如果我省略weight_var
和bias_var
随机初始化,并将所有值保持为零,则准确度会下降到接近 10%,本质上并不比猜测好。)
我究竟做错了什么?
没有任何错误。问题是,增加层数并不自动意味着更高的准确度(否则机器学习就会得到某种解决,因为如果你需要图像分类器有更好的准确度,你只需在初始阶段添加 +1 层即可获得胜利)。
为了向您表明这不仅仅是您的问题 - 请查看这篇高级论文:图像识别的深度残差学习,其中他们发现增加层数会降低评分函数(这并不重要)及其架构克服这个问题(这很重要)。这是其中的一小部分:
更深的网络具有更高的训练误差,因此测试误差也更高。
归档时间: |
|
查看次数: |
790 次 |
最近记录: |