【问题标题】:FANN Neural Network - constant resultFANN 神经网络 - 恒定结果
【发布时间】:2015-05-04 10:31:51
【问题描述】:

我正在使用带有给定代码的 FANN 库。

#include <stdio.h>
#include "doublefann.h"
int main()
{
    const NUM_ITERATIONS = 10000;
    struct fann *ann;
    int topology[] = { 1, 4, 1 };
    fann_type d1[1] = { 0.5 };
    fann_type d2[1] = { 0.0 };
    fann_type *pres;
    int i;

    /* Create network */
    ann = fann_create_standard_array(3, topology);

    /* 
     * Train network 
     * input: 0.0 => output: 0.5
     * input: 0.5 => output: 0.0
     */
    i = NUM_ITERATIONS;
    while (--i)
    {
        fann_train(ann, d1, d2);
        fann_train(ann, d2, d1);
    }

    /* Should return 0.5 */
    pres = fann_run(ann, d2);
    printf("%f\n", pres[0]);

    /* Should return 0.0 */
    pres = fann_run(ann, d1);
    printf("%f\n", pres[0]);

    /* Destroy network */
    fann_destroy(ann);

    return 0;
}

我预计第一次运行的结果是 0.5,因为根据训练,输入值 0.0 的输出值应该是 0.5。 因此,我预计第二次运行的输出为 0.0。

但这两次运行的结果都是恒定的 0.0。

我在这里错过了什么?

【问题讨论】:

标签: c neural-network fann


【解决方案1】:

来自this site:尝试将doublefann.h替换为fann.h

【讨论】:

  • 非常感谢,问题解决了!现在结果应该是 0.0 和 0.5。但是当我将训练循环分成两个单独的循环时,结果将是 0.25 和 0.5。这正常吗?
  • 训练后,权重会针对某个数据集进行优化,在您的情况下,为d2 = 0.0。然后你使用这个训练的网络并优化它的d1=0.5的权重,但是在这个过程中你“覆盖”之前的训练。您应该只训练一次,这些网络以后无法整合新信息。
猜你喜欢
  • 1970-01-01
  • 2018-01-05
  • 2018-05-06
  • 2017-02-21
  • 2020-06-21
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多