har*_*ins 5 python artificial-intelligence machine-learning neural-network
我的神经网络是正常的前馈和后退支柱.有10个输出,它应该是一个向量,其中一个输出为1,其余为0.所以像[0,0,0,0,1,0,0,0,0].所以我期望的输出是这样的:
[ 0.21332215,0.13782996,0.13548511,0.09321094,0.16769843,0.20333131, 0.06613014,0.10699013,0.10622562,0.09809167]
Run Code Online (Sandbox Code Playgroud)
理想情况下,一旦受过训练,这个:
[ 0.21332215,0.13782996,0.93548511 ,0.09321094 ,**0.9**676984,0.20333131, 0.06613014,0.1069901,0.10622562, 0.09809167]
Run Code Online (Sandbox Code Playgroud)
当我在隐藏层上有30个神经元,并且学习率> 0.1但<1时,我得到了这些结果.但是,当我有隐藏的100个神经元,并且学习率为0.01时,我得到如下结果:
[ 1.75289110e-05,1.16433042e-04 ,2.83848791e-01,4.47291309e-02, 1.63011592e-01,8.12974408e-05 , 1.06284533e-03 , 2.95174797e-02, 7.54112632e-05, 1.33177529e-03]
Run Code Online (Sandbox Code Playgroud)
为什么是这样?这是过度学习的样子吗?
然后,当我将隐藏的100个神经元的学习速率更改为0.0001时,它再次得到正常结果.
所以我的问题是:学习率如何影响隐藏层数?更大的隐藏层是否意味着更低的学习率?
Ufu*_*ici 10
可以说隐藏单位数与学习率之间存在微小的关系,一般来说,当你增加隐藏单位数时,你会得到一个更大容量的参数化模型,这样的模型总是更容易发生过度拟合相同的训练集.除此之外,该模型在较大尺寸的空间中操作,并且与较薄的模型相比具有更复杂的误差表面.当你在这样一个复杂的错误体系中应用更大的学习率时,SGD过程可能很容易分散到无意义的位置,我相信,这是你获得更高学习率的奇怪结果的真正原因.简而言之,当模型过于复杂时,较小的学习率更合理地工作是合乎逻辑的.