您当前的位置: 首页 >  ar
  • 0浏览

    0关注

    2393博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

DL之NN:基于(sklearn自带手写数字图片识别数据集)+自定义NN类(三层64→100→10)实现97.5%准确率

一个处女座的程序猿 发布时间:2018-06-24 11:20:22 ,浏览量:0

DL之NN:基于(sklearn自带手写数字图片识别数据集)+自定义NN类(三层64→100→10)实现97.5%准确率

 

 

目录

输出结果

核心代码

 

 

 

 

 

输出结果

 

核心代码
#DL之NN:基于sklearn自带手写数字图片识别数据集+自定义NN类(三层64→100→10)实现97.5%准确率
#输入64+1(偏置)个神经元,隐藏层神经元个数可以自定义,输出层10个神经元
import numpy as np  
from sklearn.datasets import load_digits              #sklearn自带数据集
from sklearn.metrics import confusion_matrix, classification_report   
from sklearn.preprocessing import LabelBinarizer      #标签二值化
from sklearn.cross_validation import train_test_split  #将数据切分分训练数据和测试数据
import matplotlib.pyplot as plt 

 
def sigmoid(x):
    return 1/(1+np.exp(-x))
def dsigmoid(x):
    return x*(1-x)

……

                
    def predict(self,x):  #预测函数,也需要先添加偏置
        #添加偏置,最初的数据64上需额外加入偏置列
        temp=np.ones(x.shape[0]+1)   #
        temp[0:-1]=x #该矩阵的0列到-1列
        x=temp   #通过转换行没有变,但是多了一列
        x=np.atleast_2d(x) #转为2维数据

        L1=sigmoid(np.dot(x,self.V)) #隐藏层输出
        L2=sigmoid(np.dot(L1,self.W)) #输出层输出
        return L2
    
digits = load_digits()  #下载数据集
X = digits.data         #输入数据
y = digits.target       #标签
#输入数据归一化:把最初的数据都变为[0~1]之间的数据
X -= X.min()   
X /= X.max()  
nn = NeuralNetwork([64, 100, 10]) #构建神经网络,神经元个数
X_train, X_test, y_train, y_test = train_test_split(X, y)  #分割数据,75%为训练25%为测试

#对标签二值化,将输出变为神经网络的风格:比如若输出3→0001000000
labels_train = LabelBinarizer().fit_transform(y_train)  
labels_test = LabelBinarizer().fit_transform(y_test)

print ("start")  
nn.train(X_train, labels_train, epochs=30000)   
print ("over")  

 

 

相关文章 gitHub  

 

关注
打赏
1664196048
查看更多评论
立即登录/注册

微信扫码登录

0.0443s