#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <time.h>
#define OUT_COUT 2 //输出向量维数
#define IN_COUT 3 //输入向量维数
#define COUT 6 //样本数量
typedef struct { //bp人工神经网络结构
int h; //实际使用隐层数量
double v[IN_COUT][50]; //隐藏层权矩阵i,隐层节点最大数量为50
double w[50][OUT_COUT]; //输出层权矩阵
double a; //学习率
double b; //精度控制参数
int LoopCout; //最大循环次数
} bp_nn;
double fnet(double net) { //Sigmoid函数,神经网络激活函数
return 1/(1+exp(-net));
}
int InitBp(bp_nn *bp) { //初始化bp网络
printf("请输入隐层节点数,最大数为100:\n");
scanf("%d", &(*bp).h);
printf("请输入学习率:\n");
scanf("%lf", &(*bp).a); //(*bp).a为double型数据,所以必须是lf
printf("请输入精度控制参数:\n");
scanf("%lf", &(*bp).b);
printf("请输入最大循环次数:\n");
scanf("%d", &(*bp).LoopCout);
int i, j;
srand((unsigned)time(NULL));
for (i = 0; i < IN_COUT; i++)
for (j = 0; j < (*bp).h; j++)
(*bp).v[i][j] = rand() / (double)(RAND_MAX);
for (i = 0; i < (*bp).h; i++)
for (j = 0; j < OUT_COUT; j+&#
BP人工神经网络C代码(转)
最新推荐文章于 2024-05-11 12:32:51 发布
该博客介绍了如何用C语言实现BP(Backpropagation)人工神经网络,包括网络结构定义、Sigmoid激活函数、初始化网络、训练网络以及使用网络进行预测的详细步骤。示例代码展示了从输入数据到输出结果的完整过程。
摘要由CSDN通过智能技术生成