我正在按照这个教程的第五部分进行学习,链接如下: http://peterroelants.github.io/posts/neural_network_implementation_part05/
这个教程创建了一个适合识别手写数字0-9的神经网络。
在教程的中间部分,作者解释说这个神经网络有64个输入(代表64像素的图像),其中包含两个隐藏的神经网络,每个的输入大小为20。(见下方截图)
我有两个问题:
1) 谁能解释一下为什么要将64个输入层投影到20个输入层上?为什么选择20?这是随意的还是通过实验确定的?有没有直观的理由?
2) 为什么要使用两个隐藏层?我在别的地方读到,大多数问题可以通过1-2个隐藏层解决,通常是通过试错法确定的。这里也是这样吗?
期待任何想法
回答:
该网络包括:
- 一个具有64个神经元的输入层 —— 每个像素一个
- 一个具有20个神经元的隐藏层
- 另一个具有20个神经元的隐藏层
- 一个具有10个神经元的输出层 —— 每个数字一个
选择两个各有20个神经元的隐藏层是相对随意的,可能如你所说,是通过实验确定的。此外,将这些层描述为另一个“网络”可能会引起混淆/误导。你关于1-2个隐藏层通常足以解决问题的主张也是正确的,对于并不复杂的数字识别问题,情况确实如此。