我在汤姆·米切尔的《机器学习导论》一书中读到一个项目构想。这个项目是关于确定面部朝向(左、右、下、正前方)。我使用了自己开发的神经网络,这个网络是有效的(已经用异或、抛物线函数等进行了测试),但无法训练得足够好以正确确定面部朝向。我得到的最好结果是43%的正确率,这相当低。
以下是项目的描述:
图像尺寸为32 x 30,灰度图(我使用了13个人,每人32张图像作为训练样本,4个人,每人32张图像作为测试样本)。
神经网络:3层 – 输入层、隐藏层、输出层
32 x 30个输入单元
3个隐藏单元,使用Sigmoid作为传递函数
1个输出单元,使用线性作为传递函数。
输出:0.2 = 左;0.4 = 下;0.6 = 右;0.8 = 正前方
学习率 = 动量 = 0.3
权重和偏置被设置为随机的小值。
经过25000次迭代后,正确率仍然只有约40%。书中他们达到了90%的准确率!
有什么建议吗?
回答:
在@ffriend的评论之后,一切都变得非常顺利。我使用了4个输出神经元,准确率超过了90%。如果我在隐藏层中使用更多的神经元,误差会更小,但程序需要更多的时间来运行网络和进行反向传播。