在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()函数来创建训练所有的输入样本和对应的输出样本:

在iOS系统上创建并运行一个简单的BP神经网络(下)_第1张图片

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


在iOS系统上创建并运行一个简单的BP神经网络(下)_第2张图片

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

在iOS系统上创建并运行一个简单的BP神经网络(下)_第3张图片

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

在iOS系统上创建并运行一个简单的BP神经网络(下)_第4张图片

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

在iOS系统上创建并运行一个简单的BP神经网络(下)_第5张图片
在iOS系统上创建并运行一个简单的BP神经网络(下)_第6张图片

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

在iOS系统上创建并运行一个简单的BP神经网络(下)_第7张图片

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

你可能感兴趣的:(在iOS系统上创建并运行一个简单的BP神经网络(下))