如何自建一个BP神经网络
这篇文章原创于两年前。现于小站重新发布
主要讲创建一个BP神经网络的教程
实际上是作者早期摸索自建的小网络的代码开源及详细解释。
以下代码均为作者本人早期思考和摸索的劳动成果
这篇文章讲使用pytorch的。
所以若没有安装 pytorch,需要安装 pytorch。
写这篇博客的原因 :
本文主要目的通过我的第一个神经网络二分类器的创建过程,来帮助我自己了解搭建一个简单神经网络的过程,也希望能够帮助到寻找搭建BP神经网络而遇到困难的人。
下面是一个BP神经网络二分类器:
若有不足,欢迎建议。
一、引入库:
1 | import numpy |
设置输入,以21个输入为例,用GPU、cuda。即写GPU、cuda。作者当时的第一个网络用的CPU所以这里是CPU :
1 | shuru=21 |
二、准备工作
定义一个MoXing类:
MoXing: 模型
定义你想要的神经网络模型
1 | class MoXing(torch.nn.Module): |
定义一个ShuJuJi类:
ShuJuJi:数据集
方便一会处理测试数据和训练数据,本文主要用csv表格中的数据。
数据集第一列为要预测的y,其他列为输入的特征,可根据自己需要改。
1 | class ShuJuJi(torch.utils.data.Dataset): |
定义ping_gu函数 :
ping_gu: 评估
用来评估神经网络效果
1 | 预测值大于分界,将预测值视为1类,否则为0类 |
三、开始 :
(为了运行后的显示效果,下面print中部分文字可能与代码不太对应,不要在意。)
启动!
1 | print("\t\t\t神经网络:\t\t (名字)")#(名字): 神经网路名字,自己取 |
初始化数据和神经网络 :
1 | print('\n|' + '-' * 80 + '\n') |
初始化训练模式 :
1 | print('\n|' + '-' * 80+'\n') |
训练神经网络:
1 | print('\n|' + '-' * 80+'\n') |
评估神经网络 :
1 | print('\n|' + '-' * 80+'\n') |
保存神经网络 :
1 | print('\n|' + '-' * 80+'\n') |
使用神经网络进行二分类 :
1 | print('\n|'+'-'*80+'\n') |
备注
使用保存的神经网络 :
1 | def yuce(model_path,shu_ru): |
训练模式二: 神经网路可视化训练
随着训练动态显示神经网络评估指标变化
即随着训练,动态显示神经效果变化
(这种模式更直观显示训练过程, 但会降低训练速度,且不再需要xianshi这个参数)
先引入plt :
( 要在上面“引入库”中多引入一个plt来画图 )
1 | import matplotlib.pyplot as plt |
动态可视化训练 :
(可将下文tu_…列表换成你要画的数据列表)
1 | print('\n|' + '-' * 80+'\n') |
如果对您有帮助,请多多支持。
评论