目的
在学习完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 # (4, 5)

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

被折叠的 条评论
为什么被折叠?



