您的位置 首页 > 数码极客

“如何用神经网络模型预测新样本“bp神经网络预测模型

【火炉炼AI】深度学习002-构建并训练单层神经网络模型

【火炉炼AI】深度学习002-构建并训练单层神经网络模型

(本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

前面我们介绍了神经网络的基本结构单元-感知器,现在我们再升一级,看看神经网络的基本结构和训练方法。

1. 单层神经网络

单层神经网络由一个层次中的多个神经元组成,总体来看,单层神经网络的结构是:一个输入层,一个隐含层,一个输出层。如下为结构示意图。

图中描述的是前向网络,但其反向传播网络的结构也是一样的。蓝色方框表示输入层,绿色圆圈表示隐含层,输出层没有绘制出来。图片来源于2017/7/20 朱兴全教授学术讲座观点与总结第二讲:单个神经元/单层神经网络。

也可以从下图中看出单层神经网络的基本结构:

那么从代码上怎么创建单层神经网络,并对其进行训练呢?

1.1 加载数据集

首先我们加载数据集,该数据集很简单,包含16行,四列,前两列是double型数据,构成了特征列,后两列是整数(0或1),构成了标签列。加载方式很简单,前面讲过多次,此处只把该数据集中特征列的分布情况绘制出来。如下

1.2 建立模型并训练

数据集准备完成后, 就需要构建单层神经网络模型,并对其进行训练。

# 构建单层NN模型,该模型的隐含层含有两个感知器 import neurolab as nl x_min, x_max = dataset_X[:,0].min(), dataset_X[:,0].max() y_min, y_max = dataset_X[:,1].min(), dataset_X[:,1].max() single_layer_net = nl.net.newp([[x_min, x_max], [y_min, y_max]], 2) # 隐含层含有两个神经元 # 所以本单层NN模型含有两个输入神经元,两个隐含层神经元,两个输出神经元 cost = (dataset_X, dataset_y, epochs=50, show=2, lr=0.01) # 训练该单层NN模型,50个回合,每2个回合显示一下训练结果,学习速率为0.01 复制代码

-------------------------------------输---------出--------------------------------

Epoch: 2; Error: 7.5; Epoch: 4; Error: 7.0; Epoch: 6; Error: 4.0; Epoch: 8; Error: 4.0; Epoch: 10; Error: 4.0; Epoch: 12; Error: 4.0; Epoch: 14; Error: 4.0; Epoch: 16; Error: 4.0; Epoch: 18; Error: 4.0; Epoch: 20; Error: 4.0; Epoch: 22; Error: 4.0; Epoch: 24; Error: 4.0; Epoch: 26; Error: 4.0; Epoch: 28; Error: 4.0; Epoch: 30; Error: 4.0; Epoch: 32; Error: 4.0; Epoch: 34; Error: 4.0; Epoch: 36; Error: 4.0; Epoch: 38; Error: 4.0; Epoch: 40; Error: 4.0; Epoch: 42; Error: 4.0; Epoch: 44; Error: 4.0; Epoch: 46; Error: 4.0; Epoch: 48; Error: 4.0; Epoch: 50; Error: 4.0; The maximum number of train epochs is reached

--------------------------------------------完-------------------------------------

可以看出在第6个回合时,cost就达到最低,并不再变化,表示已经收敛,再提高训练回合数也用处不大。将Error变化图绘制出来可以得到:

1.3 使用训练好的模型来预测新样本

训练后的模型肯定是要用它来预测新样本,期望它能对从来没有见过的新样本也能得到理想的结果。

预测的代码为:

# 用训练好的模型来预测新样本 new_samples=np.array([[0.3, 4.5], [4.5, 0.5], [4.3, 8]]) prin(new_samples)) 复制代码

-------------------------------------输---------出--------------------------------

[[0. 0.] [1. 0.] [1. 1.]]

--------------------------------------------完-------------------------------------

单单从结果上来看,我们成功的构建了单层NN模型并对其进行训练,通过训练后的模型来成功预测了新样本,一般的,一个深度学习模型流程就是这样的。

单层神经网络模型虽然结构简单,训练很快,比较适合一些简单问题,对于复杂一些的问题,这个模型就会力不从心,并且,有时我们的优化方法并不一定能够找到所希望的优化参数,也找不到所需要的拟合函数,由于模型比较简单,难以学习到复杂的内在机理,很容易产生欠拟合。

########################小**********结###############################

1,单层神经网络模型结构简单,训练耗时短,能够解决的问题也相对比较简单,对于比较复杂的问题会出现欠拟合,故而应用上受到一定限制,目前直接使用单层神经网络模型的情况非常少。

#################################################################

注:本部分代码已经全部上传到(我的github)上,欢迎下载。

参考资料:

1, Python机器学习经典实例,Prateek Joshi著,陶俊杰,陈小莉译

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何用神经网络模型预测新样本,bp神经网络预测模型,spss神经网络预测模型,神经网络预测模型实例”边界阅读