【问题标题】:Artificial Neural Network: Calculate weights? [closed]人工神经网络:计算权重? [关闭]
【发布时间】:2018-05-02 14:20:59
【问题描述】:

我编写了一个人工神经网络,它适用于简单的任务,但如果我尝试更复杂的任务[在我的案例中检测带有 28x28px 图像的笔迹],权重会做随机的事情[不规则的增加和减少,跳得非常高:对于例如,输出神经元为 1,在下一次训练后为 0.1,在下一次训练后为 0.9]。 我的 ANN 计算的值是 0 - 1。

我的计算方式:

float value = 0;
foreach (Connection c in connections)
{
    value += c.GetValue();
}
value = MathA.Sigmoid(value);
this.value = value;

我现在计算新权重的方式:

float newWeight = currentWeight * lernRate * entrieNeuronValue * (answer - expectedAnswer);

有人知道计算权重的更好方法吗?

【问题讨论】:

  • 我们需要更多关于您的项目的信息。这是什么数据。什么意思是“随机的东西”。您如何创建网络?
  • 好的,我现在改了。
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。

标签: c# neural-network artificial-intelligence


【解决方案1】:

我认为问题在于这部分(answer - expectedAnswer)。 根据answer 的值,(answer - expectedAnswer) 的结果可以是正值或负值。该计算的负结果导致负权重。负权重会给您计算下一个答案和/或权重带来混乱。 权重必须介于 0 和 1 之间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-23
    • 2012-11-14
    • 2018-09-28
    • 2011-11-19
    • 2020-04-01
    • 2013-10-01
    • 2014-11-25
    相关资源
    最近更新 更多