我们使用sklearn库来进行训练,识别数字0~9。
1.导入包
import numpy as np
from sklearn.datasets import load_digits #数据集
from sklearn.preprocessing import LabelBinarizer #标签二值化
from sklearn.cross_validation import train_test_split #切分数据 把数据分为测试数据和训练数据
2.定义训练函数
def sigmoid(x):
return 1/(1+np.exp(-x))
def dsigmoid(x):
return x*(1-x)
3.定义神经网络的类
在这里,自己定义一个类表示神经网络
class NeuralNetwork:
初始化:将输入层作为初始化参数,如(64,100,10)为输入64个神经元,隐藏层100个,输出10个
def __init__(self,layers):
#权值初始化,范围-1,1 输入层隐藏层+1代表偏置值
self.V = np.random.random((layers[0]+1,layers[1]+1))*2-1
self.W = np.random.random((layers[1]+1,layers[2]))*2-1
训练函数:X 为训练的数据 y标签 epochs迭代次数</