📄 backprop.h
字号:
/* ****************************************************************** * backprop.h ****************************************************************** */#ifndef _BACKPROP_H_#define _BACKPROP_H_#define BIGRND 0x7fff
#define MAX_LEARN 100000
#define DIMENSION_NUM 4 //数组个数
#define M 2 //输入层节点数
#define N 1 //输出层节点数
#define K 2 //隐含层节点数
#define P 0.1 //学习步长
#define Q 0.01/*** 神经网络的数据结构。网络被假定为一个全连接的3层前向结构, 每层的单元0是阈值,这意味着真正的神经元编号为1-n ***/typedef struct
{ int input_n; /* 输入层的神经元个数 */ int hidden_n; /* 隐含层的神经元个数 */ int output_n; /* 输出层的神经元个数 */ float *input_units; /* 输入层的神经元 */ float *hidden_units; /* 隐藏层的神经元 */ float *output_units; /* 输出曾的神经元 */ float *hidden_delta; /* 隐藏层的误差 */ float *output_delta; /* 输出层的误差 */ float *target; /* 目标向量 */ float **input_weights; /* 输入层到隐藏层的连接权 */ float **hidden_weights; /* 隐藏层到输出层的连接权 */ /*** 下面两个在迭代时使用 ***/ float **input_prev_weights; /* 前次输入层导隐藏层权值的改变 */ float **hidden_prev_weights; /* 前次隐藏层导输出层权值的改变 */} BPNN;/*** 用户接口 ***//* 初始化随机数种子 */void bpnn_initialize(int seed);/* 创建BP网络 */BPNN *bpnn_create(int n_in, int n_hidden, int n_out);/* 释放BP网络所占地内存空间 */void bpnn_free(BPNN *net);/* 训练BP网络 */void bpnn_train(BPNN *net, float eta, float momentum, float *eo, float *eh);/* 前向运算 */void bpnn_feedforward(BPNN* net);/* 保存BP网络到文件中 */void bpnn_save(BPNN *net, char *filename);/* 从文件中读取BP网络参数 */BPNN *bpnn_read(char *filename);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -