Machine learning 神经网络训练不够好

Machine learning 神经网络训练不够好,machine-learning,image-recognition,neural-network,Machine Learning,Image Recognition,Neural Network,我在汤姆·米切尔的《机器学习导论》一书中读到一个项目的想法。该项目是关于确定面的方向(左、右、下、直)。我使用我自己开发的神经网络,它可以工作(用XOR、抛物线函数测试…),但不能很好地训练它来正确地确定它们。我得到的最好的例子是43%的正确率,这是相当低的 以下是对该项目的描述: 图像32 x 30,灰度(我使用13人x 32图像作为训练示例,4人x 32图像作为测试) 神经网络:3层-输入、隐藏、输出 32 x 30输入单位 3个隐藏单元,使用Sigmoid作为传递函数 1个输出单元,使用线

我在汤姆·米切尔的《机器学习导论》一书中读到一个项目的想法。该项目是关于确定面的方向(左、右、下、直)。我使用我自己开发的神经网络,它可以工作(用XOR、抛物线函数测试…),但不能很好地训练它来正确地确定它们。我得到的最好的例子是43%的正确率,这是相当低的

以下是对该项目的描述:

图像32 x 30,灰度(我使用13人x 32图像作为训练示例,4人x 32图像作为测试)

神经网络:3层-输入、隐藏、输出

32 x 30输入单位

3个隐藏单元,使用Sigmoid作为传递函数

1个输出单元,使用线性作为传递函数

输出:0.2=左侧;0.4=向下;0.6=右;0.8直

学习率=动量=0.3

权重和偏差设置为随机小值

在25000次迭代之后,我仍然只有大约40%的正确率。他们设法在书中找到了答案 90%的准确率


有什么想法吗?

在@ffriend的评论之后,一切都很顺利。我使用了4个输出神经元,准确率超过90%。如果我在隐藏层中使用更多的神经元,错误会变小,但程序需要更多的时间在网络中运行并反向传播。

是否使用反向传播来调整权重?是发布你使用的代码吗?我想3个隐藏单位是不够的。隐藏层将信号从输入层转换到输出层,3个单位表示仅3个描述图像的变量。另外,请澄清这一点:“我使用13x32图像作为培训示例,使用4x32图像作为测试”。你的意思是你使用不同大小的图像吗?如果没有,这些数字意味着什么?最后一个问题:书中建议使用浮点数(0.2=左,0.4=下),或者这是你自己的想法?13人*32张图片/人用于培训示例4人*32张图片/人用于测试32张图片=8张左;8对;8直;8向下一些人正在使用玻璃是的,我向后传播来调整重量:)使用4个神经元,选择输出最大的神经元-这将大大提高精确度。