神经网络篇——从代码动身理解BP神经网络

小微 科技神经网络篇——从代码动身理解BP神经网络已关闭评论122字数 1366阅读模式
摘要一提到反向传播算法,我们就不自觉的想到随机梯度下降、sigmoid激活函数和最让人头大的反向传播法则的推导,即便是把反向传播神经网络的原理学了一遍,也还是一头雾水,在这里推荐一本小...

一提到反向传布算法,咱们就不自觉的想到随机梯度降落、sigmoid激活函数以及最使人头大的反向传布法则的推导,即使是把反向传布神经网络的原理学了一遍,也还是一头雾水,在这里举荐一本小编认为把BP神经网络讲的最通透的教材《Python神经网络编程》。下面小编将以代码的方式带着大家一步一步实现BP神经网络,并且还会再用框架的方式实现BP网络,用来以及源码作比较,认识一下TensorFlow2.0的强大。

咱们首先要理清树立BP神经网络的目的,其次,肯定BP神经网络的结构,简单地以一个输入层,一个暗藏层,一个输出层为例,咱们来思考一下写代码的思路,然后一步一步实现。文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

请点击输入图片描写文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

在这里,咱们树立BP神经网络的目的是为了做预测,咱们这里用700条MG时间序列数据作为训练数据,输入维度是10,输出为1,为了利便,咱们设置一个暗藏层,这个暗藏层包括10个节点,所以咱们的BP神经网络的结构就是[10,10,1]。接下来,开始思考一下流程:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

1、读取数据,将数据分为训练集以及测试集,注意这里的数据默许都是np.array的格式。文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

2、初始化BP网络,主要是肯定网络结构,输入层、暗藏层、输出层个数,和随机初始化互相连接的权值文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

3、调用训练办法,传入数据进行训练文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

    1. 前向传布
    2. 反向传布
    3. 保留模型进行测试

里面还有不少细节,咱们边写边完美,整个程序的框架已经很明确了。从第一步开始,读取数据,第一步中需要注意的是,读取的数据最佳进行归一化处理,一方面,这样做有助于提高预测精度,另外一方面,如果使用sigmoid作为激活函数的话,它的输出是在[0,1]之间的,如果数据不进行归一化,不在[0,1]区间的数是没有方法预测的。这里咱们直接调用sklearn中的最大最小归一化的办法就能够,为了利便读者理解代码,咱们将import紧挨着代码:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html


  1. 读取数据way1 = &39;data = np.array))需要训练的数据y = data[:,-1] 初始化BP网络34;&34;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

    构造神经网络文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

    :param ni:输入单元数量文章源自微观生活(93wg.com)微观生活-https://93wg.com/4738.html

    :param nh:暗藏单元数量

    :param no:输出单元数量

    &34;& +1 是为了偏置节点

    self.nh = nh

    self.no = no

    这里会生成一个1*ni维,数值全为1的列表

    self.ah = [1.0] * self.nh

    self.ao = [1.0] * self.no

    输入层到暗藏层

    self.wo = np.random.randn 记录权重矩阵的上次梯度

    self.ci = np.zeros

    self.co = np.zeros


    第三步开始训练并保留模型:


    def train:

    &34;&34;&34;

    for i in range: 训练集

    inputs = train[j] 目标值

    self.forword_propagation 反向传布训练,传入lable

    if i % 50 == 0: 39;wi.npy&39;wo.npy&34;&34;

    sigmoid 函数,1/

    :param x:

    :return:

    &34;&34;&34;

    前向传布进行分类

    :param inputs:输入

    :return:种别

    &34;&检查输入数据的维度是不是以及声明的一致

    print

    for i in range: 遍历暗藏层节点,每一个暗藏层节点的值为n个输入节点*对应权值关于“神经网络篇——从代码动身理解BP神经网络”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/4738.html