C语言写的三层BP神经网络代码,用fisheriris数据集训练和测试网络,也可以用于其他分类问题。
一个输入层,一个隐藏层,一个输出层,各层的节点数都可以设置。属性数据归一化采用Z-score算法,标签数据归一化采用Min-Max算法。激活函数采用Sigmoid函数。
BPNN.c和BPNN.h中包含BP神经网络代码:
bpnn_Train函数训练网络;
bpnn_predict函数预测测试数据;
bpnn_FileOutput函数输出网络参数和模型至文件;
bpnn_LoadModel函数加载网络模型。
main.c中有两个测试函数:
测试读取训练数据"train.data",训练网络,输出网络参数"bpnn_out.txt"和模型"bpnn.bin",读取测试数据"test.data",输出测试结果"test_out.txt"。
相关公式推导请看我的博客:https://blog.csdn.net/QDchenxr/article/details/124543772
1