DL之NN:基于(sklearn自带手写数字图片识别数据集)+自定义NN类(三层64→100→10)实现97.5%准确率
生活随笔
收集整理的這篇文章主要介紹了
DL之NN:基于(sklearn自带手写数字图片识别数据集)+自定义NN类(三层64→100→10)实现97.5%准确率
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
DL之NN:基于(sklearn自帶手寫數(shù)字圖片識(shí)別數(shù)據(jù)集)+自定義NN類(三層64→100→10)實(shí)現(xiàn)97.5%準(zhǔn)確率
?
?
目錄
輸出結(jié)果
核心代碼
?
?
?
?
?
輸出結(jié)果
?
核心代碼
#DL之NN:基于sklearn自帶手寫數(shù)字圖片識(shí)別數(shù)據(jù)集+自定義NN類(三層64→100→10)實(shí)現(xiàn)97.5%準(zhǔn)確率 #輸入64+1(偏置)個(gè)神經(jīng)元,隱藏層神經(jīng)元個(gè)數(shù)可以自定義,輸出層10個(gè)神經(jīng)元 import numpy as np from sklearn.datasets import load_digits #sklearn自帶數(shù)據(jù)集 from sklearn.metrics import confusion_matrix, classification_report from sklearn.preprocessing import LabelBinarizer #標(biāo)簽二值化 from sklearn.cross_validation import train_test_split #將數(shù)據(jù)切分分訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù) 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): #預(yù)測函數(shù),也需要先添加偏置#添加偏置,最初的數(shù)據(jù)64上需額外加入偏置列temp=np.ones(x.shape[0]+1) #temp[0:-1]=x #該矩陣的0列到-1列x=temp #通過轉(zhuǎn)換行沒有變,但是多了一列x=np.atleast_2d(x) #轉(zhuǎn)為2維數(shù)據(jù)L1=sigmoid(np.dot(x,self.V)) #隱藏層輸出L2=sigmoid(np.dot(L1,self.W)) #輸出層輸出return L2digits = load_digits() #下載數(shù)據(jù)集 X = digits.data #輸入數(shù)據(jù) y = digits.target #標(biāo)簽 #輸入數(shù)據(jù)歸一化:把最初的數(shù)據(jù)都變?yōu)閇0~1]之間的數(shù)據(jù) X -= X.min() X /= X.max() nn = NeuralNetwork([64, 100, 10]) #構(gòu)建神經(jīng)網(wǎng)絡(luò),神經(jīng)元個(gè)數(shù) X_train, X_test, y_train, y_test = train_test_split(X, y) #分割數(shù)據(jù),75%為訓(xùn)練25%為測試#對標(biāo)簽二值化,將輸出變?yōu)樯窠?jīng)網(wǎng)絡(luò)的風(fēng)格:比如若輸出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")?
?
相關(guān)文章
gitHub
?
?
總結(jié)
以上是生活随笔為你收集整理的DL之NN:基于(sklearn自带手写数字图片识别数据集)+自定义NN类(三层64→100→10)实现97.5%准确率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DL:LinearNN(numpy自定义
- 下一篇: Paper之DL之BP:《Underst