标准BP算法用Python编程实现

news/2024/12/18 16:09:58/

1.需要导入两个模块

import pandas as pd
import numpy as np

2.定于激活函数

def sigmoid(x):return 1/(1+np.exp(-x))

3.标准BP算法


def BP(x_train,y_train,numb,inta): #x_train,y_train表示训练集,numb表示隐层神经元的个数,inta表示学习率#print('x_train:',x_train)#print('y_train:',y_train)v=np.matrix(np.random.rand(len(x_train.T),numb)) #随机生成输入层神经元与隐层神经元之间的连接权#print('v:',v)w=np.matrix(np.random.rand(numb,len(y_train.T))) #随机生成隐层神经元与输出层神经元之间的连接权#print('w:',w)thita=np.matrix(np.random.rand(len(y_train.T)))   #输出神经元的阈值#print("thita:",thita)garma=np.matrix(np.random.rand(numb))   #输出神经元的阈值#print("garma:",garma)temp=0for i in range(len(x_train)):alpha=x_train[i].dot(v)#隐层神经元的输入#print('alpha',alpha)b=sigmoid(alpha) #隐层神经元的输出#print('b',b)beta=b.dot(w)     #输出神经元的输入#print('beta',beta)y_estimate=sigmoid(beta-thita)   #求出y的估计值#print('y_estimate',y_estimate)g=y_estimate.dot((1-y_estimate).T).dot(y_train[i]-y_estimate)  #输出层神经元的梯度#print('g',g)e=b.dot((1-b).T).dot(g).dot(w.T)   #隐层神经元的梯度#print('e',e)E=1/2*(y_estimate-y_train[i]).dot((y_estimate-y_train[i]).T)  #均方误差#print('E',E)if E>temp:   #更新连接权和阈值w=w+inta*(b.T).dot(g)#print('w',w)thita=thita-inta*g#print('thita',thita)v=v+inta*(x_train[i].T).dot(e)#print('v',v)garma=garma-inta*e  #隐层神经元的阈值#print('garma',garma)temp=Ereturn w,v,thita,garma

**

示例:

**随机生成训练集x与y

x=np.matrix(np.random.rand(3,4)) #输入层:随机生成3个样本,每个样本有4个神经元
y=np.matrix(np.random.rand(3,2)) #输出层:随机生成3个样本,每个样本有2个神经元
print('x',x)
print('y',y)

在这里插入图片描述
调用BP函数

w,v,thita,garma=BP(x,y,4,0.01)#这里我假设隐层有4个神经元,学习率为0.01
print('w',w)
print('v',v)
print('thita',thita)
print('garma',garma)

在这里插入图片描述


http://www.ppmy.cn/news/503816.html

相关文章

使用BP网络逼近函数-matlab

一、大致介绍 BP算法的学习过程是由正向传播和反向传播组成的。在正向传播的过程中,输入的信息从输入层到隐含层处理 最后传向输出层,而且每一个神经元只能影响到下一层神经元的状态。当在输出层得不到期望的输出时,则转向反向传播&#xff0…

实验1 BP神经网络实验

传送门(所有的实验都使用python实现) 实验1 BP神经网络实验 实验2 som网实验 实验3 hopfield实现八皇后问题 实验4 模糊搜索算法预测薄冰厚度 实验5 遗传算法求解tsp问题 实验6 蚁群算法求解tsp问题 实验7 粒子群优化算法求解tsp问题 实验8 分布…

三层BP

三层BP 程序参考 理论介绍 定义各参数: /*** input vector.输入向量 */ private final double[] input; /*** hidden layer. 隐含层向量*/ private final double[] hidden; /*** output layer. 输出层*/ private final double[] output; /*** target. 期望值*/ …

matlab BP神经网络仿真

%% BP神经网络进行预测 clear all clc %% 导入数据 rand(seed,100) load data figure(1) scatter([1:size(data,1)],data(:,3)); xlabel(样本序号) ylabel(实测容量/kVA) grid on % 训练集 input_train data(1:226,1:5); %取输入的前42个样本作为训练样本 output_train data…

BP神经网络原理详解

从神经网络的生物模型说起 我们知道人大脑信息的传递、对外界刺激产生反应都由神经元控制的,人脑就是由上百亿个的这样神经元构成。这些神经元之间并不孤立而且联系很密切,每个神经元平均与几千个神经元相连接,因此构成了人脑的神经网络。刺激…

Python3实现BP神经网络

主要是实现了这位大佬的代码,顺便加了一些自己的理解http://www.cnblogs.com/Finley/p/5946000.html import math import random random.seed(0) def rand(a,b): #随机函数return (b-a)*random.random()adef make_matrix(m,n,fill0.0):#创建一个指定大小的矩阵mat …

人工智能——BP神经网络

BP神经网络应该是所有神经网络里面的比较简单易懂的一种。 当然,python是有BP神经网络的库,但是我这次要给的代码,是我自己根据网上大佬的案例,自己手动编写的一个隐含层的一个神经网络模型。 代码的流程如下: 1.读取…

用Matlab创建BP神经网络

前言 最近在自学吴恩达的机器学习,还有学校的数据挖掘课程。课程结课设计要求剖析一个分类器程序,这是我在网上找的一篇文章(ANN神经网络入门——分类问题(MATLAB) https://blog.csdn.net/u012321457/article/det…