python学习笔记(一):BP神经网络

**
最近花了很长时间做了一些东西,但最终却没能得到理想效果,心情很是低落,静心一想,突然发觉,在这不断纠结与所谓“放松”的逃避过程中,许多时日已从手边滑走,甚是惊恐。思来想去,还是自己本身学的不够扎实,急于求成,所以想要来写些东西,一来让自己静下心来;二来希望能与大家一起讨论学习,打牢自身基础。
**

python学习笔记(一):BP神经网络

BP(Error Back Proragation)神经网络是一种具有非线性连续转移函数的多层前馈网络。本文主要介绍具有单隐层的三层BP神经网络。

BP神经网络结构

python学习笔记(一):BP神经网络_第1张图片

模型数学表达

python学习笔记(一):BP神经网络_第2张图片
python学习笔记(一):BP神经网络_第3张图片
python学习笔记(一):BP神经网络_第4张图片
python学习笔记(一):BP神经网络_第5张图片
python学习笔记(一):BP神经网络_第6张图片
python学习笔记(一):BP神经网络_第7张图片
python学习笔记(一):BP神经网络_第8张图片
python学习笔记(一):BP神经网络_第9张图片
python学习笔记(一):BP神经网络_第10张图片
python学习笔记(一):BP神经网络_第11张图片
python学习笔记(一):BP神经网络_第12张图片

具体python代码实现

_author_='Jack Zhou'

import numpy as np
import math
import xlrd
import matplotlib.pyplot as plt

#设置激活函数
def activaton_function(x):
    m,n=x.shape
    y=np.zeros((m,n))
    for i in range(m):
        for j in range(n):
            y[i,j]=1/(1+math.exp(-x[i,j]))
    return y

#利用BP算法计算权重值
def BP_network(inp,rev,wij,wjk,error,ita):
    mi,ni=wij.shape
    mj,nj=wjk.shape
    
    y11=wij.dot(inp)
    yj=activaton_function(y11)
    y2=wjk.dot(yj)
    yk=activaton_function(y2)
    
    #get the deviation between yk and rev
    #e=sum([(yk[i,0]-rev[i,0])**2 for i in range(nj)])/2
    e=abs(yk-rev[0,0])/rev[0,0]
    
    if e

我编写这段代码想要解决的问题是预测一个值,就只有一个输出,所以输出层只有一个神经元。其中计算输入层到隐藏层的权重调整值得那行代码(后面注释有问号的那行)总觉得有些不对,希望有哪位大神能帮忙看看怎么解决?

你可能感兴趣的:(python学习)