用户:
sdgsdgsdfgsfgsfgsfg查看:18 回复:4 评论:18 创建时间:2021-07-16T11:18:07
前几天突发奇想
如果我不只给输出层一个目标,也给隐藏层一个呢?
想了一下,我觉得如果给隐藏层目标,只需要7个隐藏节点
我们知道,平时可以看到的一些电子表上面都有这种数字
其中如果每一条线段长度相等,就可以算作七条
每一个数字对应着一种组合,0~9对应者10个
举例来讲
如果用一般阅读排列顺序(左右局部上下整体)
由于隐藏层有7个节点,所以目标如果是5,目标隐藏层就应当是
[1,1,0,1,0,1,1]
其中每一个1对应一个线段的存在
每一个0对应一个线段的不存在
这样的话
我们就可以把整个神经网络拆成两个(输入层->隐藏层&隐藏层->输出层)
再分开训练
此外由于后半部分的输入是隐藏层,我们需要保证隐藏层输入是正确无误的
所以我打算先训练前半,再训练后半
最终图表如下
y轴隐藏层误差 x轴前半训练次数

y轴输出层误差 x轴后半训练次数

与没有给隐藏层设定目标的7个隐藏节点神经网络的最终数据相比,设定隐藏层目标的高了5%~10%(合理误差范围)
这里我再回想一下我是怎么设定隐藏层目标的
我当时因为不可能手动更改mnist数据,只能在读取数据的时候根据输出层目标来设定隐藏层目标(一个对应一个)
那如果隐藏层节点再多一点,我们再使用更巧妙一点的手法设置隐藏层目标
最终效果会不会更好呢