在iOS系统上创建并运行一个简单的BP神经网络(下)

在iOS系统上创建

上篇讲述了神经网络的基本数学推导,下面讲讲实际应用。我们的神经网络模型是用C语言编写的,然后通过OC调用C语言函数来实现在iOS系统上的调用。

首先定义两个二维数组来模拟矩阵(矩阵就是一个二维数组) d_in[Data][In],d_out[Data][Out]。其中Data为训练样本数据,in代表每个样本有几个输入,Out代表每个样本有几个输出。声明w[Neuron][In]  表示某个输入对某个神经元的权重,v[Out][Neuron] 来表示某个神经元对某个输出的权重;与之对应的保存它们两个修正量的数组 dw[Neuron][In] 和 dv[Out][Neuron]。数组 o[Neuron] 记录的是神经元通过激活函数对外的输出,OutputData[Out]  存储BP神经网络的输出。

至此,所需变量都声明完毕。该写C语言函数了。首先,训练数据需要训练样本的支持。所以,写一个CreateTestExample()函数来创建训练所有的输入样本和对应的输出样本:

创建完文件以后,要读取样本数据给神经网络以训练。创建一个readData()函数:


初始化一个神经网络:注意,此处需要将样本归一化到0至1之间,以防训练时产生较大波动。

初始化网络以后,就可以进行训练了:

其中computeO()函数用来进行前向计算,backUpdate()函数用来进行BP算法:

在创建的iOS工程文件里调用这几个函数即可:

至此,一个iOS项目就完成了。项目代码可以上我的GitHub上下载。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容