翻译:雷锋字幕组(Mr.水方子)
在本文中,我们将用C语言从头开始实现一个基本的神经网络框架。之所以在C语言中这样做,是因为大多数库和其他高级语言(如Python)都抽象出了实现细节。在C语言中实现反向传播实际上会让我们更详细地了解改变权重和偏差是如何改变网络的整体行为的。
注意:本文假设您了解反向传播算法背后的数学原理。如果你不熟悉,请参考这个。
我们的目标是建立一个通用的框架,其中的层数和神经元将由用户根据他的要求指定。因此,我们将从用户获得以下输入来定义我们的神经网络框架:
1. 层数
2.每层神经元数目
3.学习速率
4.训练例子
5.输出标签
定义层和神经元结构:
一旦我们有了层的数量和每层神经元的数量,我们就可以创建我们的神经网络的架构。但首先我们必须定义神经元和层的结构。
神经元结构将包含以下参数:
层结构将有许多神经元在该层和一个指针的neuron_t结构。
创建架构:
现在,让我们使用create_architecture()函数创建我们的神经网络的体系结构。
在下面的代码片段中,外部For循环创建层,内部For循环将指定数量的神经元添加到该层。我们也随机初始化神经元的权值在0到1之间。
训练的例子:
我们将使用get_input()函数存储训练示例: