FANN 神经网络 - 常量结果
FANN Neural Network - constant result
我正在使用给定代码的 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。
我在这里错过了什么?
来自 this site:尝试将 doublefann.h
替换为 fann.h
。
我正在使用给定代码的 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。
我在这里错过了什么?
来自 this site:尝试将 doublefann.h
替换为 fann.h
。