文章主要参考https://blog.csdn.net/john_bian/article/details/79503572,原文是matlab版本的实现。在此基础上,利用Python实现BP网络对函数的逼近。对于BP神经网络的基本原理以及推导,这里就不再赘述,可以查阅相关文献。
代码如下:相应部分都有注释
###function approximation f(x)=sin(x)
###2018.08.15
###激活函数用的是sigmoid
import numpy as np
import math
#import matplotlib.pyplot as plt
x = np.linspace(-3,3,100)
x_size = x.size
y = np.zeros((x_size,1))
# print(y.size)
for i in range(x_size):
y[i]= math.sin(x[i])
hidesize = 10
W1 = np.random.random((hidesize,1)) #输入层与隐层之间的权重
B1 = np.random.random((hidesize,1)) #隐含层神经元的阈值
W2 = np.random.random((1,hidesize)) #隐含层与输出层之间的权重
B2 = np.random.random((1,1)) #输出层神经元的阈值
threshold = 0.005
max_steps = 501
def sigmoid(x_):
y_ &