Python手写神经网络之(一)BP神经网络

该博客介绍了作者如何在不使用深度学习框架的情况下,仅用numpy库手写实现了一个简单的BP神经网络。神经网络结构为4-5-1,目标是判断输入层前两数之和与后两数之和的大小关系。作者通过定义类,包括初始化、激励、前向传播和后向传播函数,生成数据集,并在主函数中设置参数进行训练。结果显示损失函数逐渐减小,证明神经网络在学习过程中。
摘要由CSDN通过智能技术生成

目的

  在学习完BP神经网络的推导后,我会用python(不带深度学习框架!)自己手写出一个简单的BP神经网络,以此加深对神经网络的理解,同时欢迎大家指出问题,一起学习与讨论~

设计思路

  本次我只使用了numpy库,为了简明易懂,使用类封装的方法,做了一个含有:四节点输入层,五节点的隐藏层,与一节点输出层的BP神经网络。
  这个神经网络的学习目标是将输入层的前两个数字之和与后两个数字之和相比较,结果为大于则输出1,小于就输出0。(这个学习目标对于神经网络可以说是非常地简单了)
  我首先定义了一个BP神经网络的类,它包含初始化函数,激励函数,前向传播函数以及后向传播函数。然后写了一个数据集生成的函数,为了制造我们所需要的数据和它对应的输出。最后,在主函数中,我们定义好数据大小,batch size,学习率以及最大迭代次数就可以跑起来啦!

代码以及结果

代码实现

import numpy as np

class BP_network(object):
    #The network is like:
    #    l0 -> w1 -> l1 -> w2 -> (l2 == y?)
    def __init__(self):
        # 4 node in input layer
        # 5 node in the hidden layer
        self.w1 = 2*np.random.random((4, 5)) - 1   
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值