BP算法实现 Python

BP算法实现

1 项目信息

项目名称:bp算法实现

语言:python

平台:jupyter

2 功能介绍

实现网络定义:网络结构、激活函数、softmax、损失函数

实现前向传播、后向传播过程

实现批量数据的BP 过程

3 具体代码

import numpy as np

3.1 网络结构定义

输入模型的相关参数以确定模型的具体结构。

模型参数包括模型的层数、每层的神经元数、所使用的激活函数以及学习率。

模型默认提供ReLU和sigmoid激活函数,损失函数默认设置为交叉熵。

layerNum = int(input('layer num : '))

# 输入格式 eg: [2,3,2]
unitNums = input('unit nums : ')
unitNums = eval(unitNums)
maxUnitNum = max(unitNums[1:])

# 输入格式 eg: sigmoid/relu
actFun = input('activation function : ')

learnRate = input('learning rate : ')

3.2 初始化模型计算矩阵

根据模型的层数和每层的神经元个数,确定权重个数。

  • 权重矩阵weights[层数-1,单层最大权重个数],使用高斯函数初始化权重矩阵。

  • 权重跟新矩阵derWeights[层数-1,单层最大权重个数],用于存储经过一次反向传播后权重的更新值。

  • 隐藏层神经元矩阵hiddenUnits[层数-1,单层最大单元数],用于存储神经元的计算结果(未激活)。

  • 隐藏层神经元激活值矩阵hiddenUnitActivitys,用于存储神经元计算结果经过激活函数的结果。

  • 隐藏层神经元激活值导数矩阵derHiddenUnitActivitys,用于存储神经元计算结果经过激活函数导函数的结果

weightNums = [unitNums[i]*unitNums[i+1] for i in range(layerNum-1)]
print('weight nums : {}'.format(weightNums))
maxWeightNum = max(weightNums)
print('max weight num : {}'.format(maxWeightNum))

weights = np.random.normal(size=(layerNum-1, maxWeightNum))
for i in range(layerNum-1):
    t = weightNums[i]
    weights[i,t:] = 0
print('weights : {}'.format(weights.shape))

derWeights = np.zeros(shape=(layerNum-1, maxWeightNum))
print('derweights : {}'.format(derWeights.shape))

hiddenUnits = np.zeros(shape=(layerNum-1, maxUnitNum))
print('hidden units : {}'.format(hiddenUnits.shape))

hiddenUnitActivitys = np.zeros(shape=(layerNum-1, maxUnitNum)) 
print('hidden unit activitys : {}'.format(hiddenUnitActivitys.shape))

derHiddenUnitActivitys = np.zeros(shape=
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值