前馈神经网络:训练模块
Struct.h
是结构体定义和初始化的头文件
主体函数 main
定义了神经网络的结构
int L = 3; //神经网络的层数
int m[] = { img_size, 300,50, classes }; //每一层的结点数:m[1:]
char optimizer[] = "Adam";
bool first = true; //是否初次运行网络
FNN Net;
Init_Network_FNN(Net, L, m, batch_sizes);
主体函数 main
调用 FNNTrain
函数运行训练函数
createDatas
: 初始化权重矩阵与偏置(参数)readDataFromMnist_train
: 从数据集中读取数据,并返回文件指针forward
: 前向传播更新各层的输入输出backward
: 反向传播得到各参数的偏导parameters_update_Adam
: 选择优化方法Adam
更新参数- 重复
3-5
,直到满足停止条件
readDataFromMnist_train_con
: 从数据集中继续读取数据,并重复 3-5
,直到满足停止条件。
数据的存储
save_weight_arrays
: 存储权重矩阵w
到TXT文件save_bias
: 存储偏置b
save_offset
: 存储图像与标签文件的文件指针,方便下次使用
程序主体上是采用C编写,实际上还是使用了C++的一些性质,如 new
函数。
未使用面向对象编程