前言
BP神经网络是深度神经网络的基础,由于深度神经网络过于复杂,不便于理解其中参数更新的过程,所以我们一般会用3层网络来理解这个过程。BP网络由输入层,隐藏层和输出层组成。一次正向传播输出结果,算出损失值,然后一次反向传播,求出各层之间连接的权重和偏置的梯度,通过梯度下降法(或者其他方法)更新参数,从而完成一次loss的最小优化。重复正,反向传播的过程,直到loss不再减小(或者说减少的很小,可忽略不计)。求梯度的过程是需要仔细推导的,矩阵求导可以记住求导公式(或者自己去推敲),其他函数的求导倒是没啥问题,激活函数都比较简单。
编程实现
import numpy as np
import os
import matplotlib.pyplot as plt
#sigmoid 函数的导数
def sigmoid_dt(y):
return y*(1-y)
#sigmoid 函数
def sigmoid(x):
return 1./(1+np.exp(-x))
"""
函数说明:加载数据集
set,txt文件的数据格式形如:
-0.017612 14.053064 0
-1.395634 4.662541 1
-0.752157 6.538620 0
-1.322371 7.152853 0
0.423363 11.054677 0
0.406704 7.067335 1
Parameters:
无
Returns:
返回 feature 和 lable
"""
def loadData():
feature = []
lable = []
fr = open('set.txt