BP人工神经网络C代码(转)

该博客介绍了如何用C语言实现BP(Backpropagation)人工神经网络,包括网络结构定义、Sigmoid激活函数、初始化网络、训练网络以及使用网络进行预测的详细步骤。示例代码展示了从输入数据到输出结果的完整过程。
摘要由CSDN通过智能技术生成
#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+&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值