【问题标题】:Neural network not training enough well神经网络训练不够好
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-09-15
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2014-02-24
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多