【发布时间】:2012-08-30 11:37:09
【问题描述】:
我在 Tom Mitchell 的“机器学习简介”一书中读到了一个项目的想法。该项目是关于确定面部的方向(左、右、下、直)。我使用我自己开发的神经网络,它可以工作(用 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% 的准确率!
有什么想法吗?
【问题讨论】:
-
你是否使用反向传播来调整权重?是post发布你使用的代码吗?
-
我猜 3 个隐藏单元是不够的。隐藏层将信号从输入层转换到输出层,3 个单元意味着只有 3 个描述图像的变量。还请澄清这一点:“我使用 13x32 图像进行训练示例,使用 4x32 进行测试”。你的意思是你使用不同大小的图像?如果不是,这些数字是什么意思?最后一个问题:书中建议使用浮点数(0.2 = 左,0.4 = 下)还是你自己的想法?
-
13 人 * 每人 32 张图像用于训练示例 4 人 * 每人 32 张图像用于测试 32 张图像 = 剩下 8 张; 8对; 8直; 8下来有些人戴眼镜
-
是的,我向后传播以调整权重:)
-
使用 4 个神经元并选择输出最大的一个 - 这应该会大大提高准确性。
标签: machine-learning image-recognition neural-network