本篇文章主要介绍了如何用多层神经网络BP算法做文本垃圾分类。
在多层神经网络BP算法里面,最核心的部分其实就是梯度下降。梯度下降的方法有很多种,这里使用的是感知机(Perceptions);当然还有其它的一些方法,例如RBF和Adaline两个梯度下降的方法。
之后我会写出两个python的脚本,一个是模块脚本,用来被调用的;另外一个是测试脚本,用来训练和测试用的。
这个部分是nn.py的模块,之后会调用里面的方程。
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 19 17:14:07 2017
@author: CHEN Ming
"""
from numpy import tanh,multiply,unique,zeros,sign
def mlp_test(x,W1,W2):
z = tanh(W1*(x.T))
y = tanh(W2*z)
return y,z
def errorSample(yd,y):
err = (yd-y)
return err
# 梯度下降
def backprop(W1,W2,err,x,yp,z,eta):
delta2 = multiply(-err,(1-multiply(yp,yp)))
delta1 = multiply( (W2*(delta2.tolist()[0][0])).T,(1-multiply(z,z)) )
W2 = W2-eta*delta2*(z.T)
W1 = W1-eta*delta1*x;
return W1,W2
# 只设置最大循环次数
d