python实现BP神经网络进行预测和误差分析(附源代码)

反向传播算法也称为BP神经网络,是一种带有反馈的神经网络反向学习方法,它可以对神经网络的各层上的各个神经元的各个神经元之间的连接权重进行不断迭代修改,使神经网络将输入数据转换成期望的输出数据

BP神经网络的学习过程由正向传播和反向传播两部分组成,正向传播完成通常的前向计算,由输入数据运算得到输出结果。反向传播的方向则相反,是将计算得到的误差回送,逐层传递误差调整神经网络的各个权值,然后神经网络再次进行前向运算,直到神经网络的输出达到期望的误差要求

  问题描述:神经网络的输入为3和6 期待的输出分别为0和1 输入层到隐藏层的初始权重依次为:w11=0.11,w12=0.12,w13=0.13,w14=0.14,w15=0.15,w16=0.16,

截距为0.3,隐藏层到输出层的初始权重为 w21=0.17,w22=0.18,w23=0.19,w24=0.20,w25=0.21,w23=0.22截距为0.6

使用BP神经网络算法 迭代调整得到合适的权重,并查看不同迭代次数下的误差结果,神经网络的学习率设置为0.3

输入结果如下

 

 

代码如下 需要根据自己的模型修改参数和输入数据

import  numpy as np
import  matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体

import matplotlib; matplotlib.use('TkAgg')
mpl.rcParams["font.sans-serif"] = ["SimHei"]
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['font.size'] = 10
matplotlib.rcParams['axes.unicode_minus']=False
def sigmoid(x):
    return 1/(1+np.exp(-x))
#前向计算
def forward_NN(x,w,b):
    h1=sigmoid(w[0]*x[0]+w[1]*x[1]+b[0])
    h2=sigmoid(w[2]*x[0]+w[3]*x[1]+b[0])
    h3=sigmoid(w[4]*x[0]+w[5]*x[1]+b[0])
    print(h1,h2,h3)
    o1=sigmoid(w[6]*h1+w[8]*h2+w[10]*h3+b[1])
    o2=sigmoid(w[7]*h1+w[9]*h2+w[11]*h3+b[1])
    return h1,h2,h3,o1,o2
#反向传递 调整参数
def fit(o1,o2,y,x,w,lrate,epochs):
    for i in range(epochs):
  #循环迭代 调整参数
        p1=lrate*(o1-y[0])*o1*(1-o1)
        p2 = lrate * (o2 - y[1]) * o2 * (1 - o2)
        w[0]=w[0]-(p1*w[6]+p2*w[7]*h1*(1-h1)*x[0])
        w[1] = w[1] - (p1 * w[6] + p2 * w[7] * h1 * (1 - h1) * x[1])
        w[2] = w[2] - (p1 * w[8] + p2 * w[9] * h2 * (1 - h2) * x[0])
        w[3] = w[3] - (p1 * w[8] + p2 * w[9] * h2 * (1 - h1) * x[1])
        w[4] = w[4] - (p1 * w[10] + p2 * w[11] * h3 * (1 - h3) * x[0])
        w[5] = w[5] - (p1 * w[10] + p2 * w[11] * h3 * (1 - h3) * x[1])
        w[6]=w[6]-p1*h1
        w[7] = w[7] - p2 * h1
        w[8] = w[8] - p1 * h2
        w[9] = w[9] - p2 * h2
        w[10] = w[10] - p1 * h3
        w[11] = w[11] - p2 * h3
    return w
print("步骤一 初始化参数")

x=[3,6]
y=[0,1]
w=[0.6,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.70,0.71,0.72,0.73]
b=[0.3,0.6]
lrate=0.4

print("步骤二 fit")
print("步骤三 预测")
print("真值为",y)
sumDs=[]
for epochs in range(0,101,5):
    h1,h2,h3,o1,o2=forward_NN(x,w,b)
    w=fit(o1,o2,y,x,w,lrate,epochs)
    h1,h2,h3,o1,o2=forward_NN(x,w,b)
    print("迭代",epochs,"次的输出为\n",o1,o2)
    sumDs.append(o1-y[0]+(o2-y[1]))

print("画图")
plt.plot(range(0,101,5),sumDs)
plt.title("the epoch-error plot for 铅钡")
plt.xlabel("epochs")
plt.ylabel("totol error")
plt.show()

Python 神经网络情感分析是一种利用Python编程语言和神经网络技术进行情感分析的方法。情感分析是指通过分析文本、语音或图像等数据,来识别和分析文本中蕴含的情感、情绪以及意图等信息。 Python是一种广泛应用于数据科学和机器学习的编程语言,它提供了丰富的机器学习库和工具,如TensorFlow、Keras和PyTorch等,这些库和工具可以帮助我们构建和训练神经网络模型。 在情感分析中,我们可以使用神经网络模型来学习从文本数据中提取有关情感的特征。神经网络模型由多个神经元组成的结构,通过对大量标记好的训练数据进行学习和训练,能够学习到输入数据和对应的情感之间的关系。 为了进行情感分析,我们需要收集和准备好用于训练和测试的数据。在这个过程中,我们可以使用Python来处理文本数据,例如分词、去除停用词和标注情感标签等。 然后,我们可以使用Python中的神经网络库和工具来构建和训练情感分析模型。通过调整模型的结构和参数,我们可以提高模型的性能和准确率。 最后,我们可以使用训练好的模型对新的文本数据进行情感分析。通过输入文本数据,我们可以输出与之相关的情感类别或情感得分。 总结来说,Python神经网络情感分析是一种使用Python编程语言和神经网络技术进行情感分析的方法。借助Python的强大机器学习库和工具,我们可以构建和训练高性能的神经网络模型,用于识别和分析文本数据中的情感和情绪信息。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值