算法介绍及实现

您所在的位置:网站首页 Pythontorch 算法介绍及实现

算法介绍及实现

2024-07-08 08:10:37| 来源: 网络整理| 查看: 265

 BP算法是我接触到的第一个算法,可谓是梦开始的地方,算法专栏用它作为开篇再合适不过了。

目录

1、什么是BP神经网络?

2、BP神经网络的原理?

3、BP神经网络如何实现?

4、总结

1、什么是BP神经网络?

        BPNN是一种当下的应用比较广泛的智能算法,是MLP的一种,是用于寻找数据集中非线性的、复杂的数据关系。它是基于生物神经网络的原型,对其进行抽象和模拟,模仿人脑思考问题的方式和方法,能很好的去发掘数据之间的相关性。其主要用去数据的建模和预测。其结果如下图所示:

        举个不严谨的例子,我在输入层输入今天的温度、降雨、是否周末等就可以通过网络“计算”获得商场的人数,因为商场的人数是受温度、降雨、是否周末所影响的,所以如果掌握了它们其中的影响过程,当我们有新的影响因子数据(温度、降雨、是否周末)时就可对商场人数进行预测。

2、BP神经网络的原理?

        个人论文节选:

 

 

 

3、BP神经网络如何实现?

        使用Python的torch模块来实现BP神经网络,如下。对于BP网络的实现,有些人会选择自己从头到尾实现,我认为这确实是一种对理论掌握和代码能力的很好的体现,但是我个人建议如果对其原理已经完全掌握还是直接使用一些库提供的API会更为方便,如sklearn库、torch、tensorflow等等。

import torch class ini_BP_net(torch.nn.Module): def __init__(self, n_feature, n_hidden, n_output): super(ini_BP_net, self).__init__() # 构造隐含层和输出层 self.hidden = torch.nn.Linear(n_feature, n_hidden) self.output = torch.nn.Linear(n_hidden, n_output) def forward(self, x): # 前向计算 hid = torch.tanh(self.hidden(x)) out = torch.tanh(self.output(hid)) return out def train(model, epochs, learning_rate, x_train, y_train): """ :param model: 模型 :param epochs: 最大迭代次数 :param learning_rate:学习率 :param x_train:训练数据(输入) :param y_train:训练数据(输出) :return: 最终的loss值(MSE) """ loss_fc = torch.nn.MSELoss(reduction="sum") optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) loss_list = [] for i in range(epochs): model.train() # 前向计算 data = model(x_train) # 计算误差 loss = loss_fc(data, y_train) loss_list.append(loss) # 更新梯度 optimizer.zero_grad() # 反向传播 loss.backward() # 更新参数 optimizer.step() # print("This is {} th iteration,MSE is {}。".format(i+1,loss)) # 返回误差是为了观测网络训练过程的误差下降情况 loss_ls = [loss_list[i].detach().numpy() for i in range(len(loss_list))] return loss_ls if __name__ == "__main__": n_feature = 2 n_hidden = 5 n_output = 1 # 构建模型 model = ini_BP_net(n_feature, n_hidden, n_output) # 测试 # 数据准备 # ======================== # # 此处数据准备的比较随意,在实际应用中,x_train为对于影响因子,y_label为对应真值数据。 x_train = torch.rand(5,n_feature) y_label = torch.rand(5,n_output) # ============================== # learn_data = 1e-2 loss_ls = train(model, 1000, learn_data, x_train, y_label) import matplotlib.pyplot as plt plt.plot(loss_ls) plt.show() 4、总结

        BP神经网络有很强的数据拟合能力,能很好的发现数据之间的相互关系。值得注意的是,如果实验数据之间没有很强的相关性,会导致无法收敛。所以在利用BP神经网络进行建模前,可以对相关数据进行相关性分析,根据相关程度选择模型使用数据。

作者水平有限,欢迎留言指正讨论!

共勉!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭