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

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

输出结果

image.png

image.png

核心代码

#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")  


相关文章
|
4月前
|
API 算法框架/工具
【Tensorflow+keras】使用keras API保存模型权重、plot画loss损失函数、保存训练loss值
使用keras API保存模型权重、plot画loss损失函数、保存训练loss值
34 0
|
7月前
|
机器学习/深度学习 数据处理 计算机视觉
YOLOv8改进 | 2023 | 将RT-DETR模型AIFI模块和Conv模块结合替换SPPF(全网独家改进)
YOLOv8改进 | 2023 | 将RT-DETR模型AIFI模块和Conv模块结合替换SPPF(全网独家改进)
252 0
|
机器学习/深度学习 人工智能 算法
【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类
是在Dropout随机选取节点丢弃的部分上进行优化,即将Dropout随机选取的一组节点变成随机选取多组节点,并计算每组节点的结果和反向传播的损失值。最终,将计算多组的损失值进行平均,得到最终的损失值,并用其更新网络,如图9-19所示。
258 0
【Pytorch神经网络实战案例】21 基于Cora数据集实现Multi_Sample Dropout图卷积网络模型的论文分类
|
算法 Windows
【文本分类】基于类信息的TF-IDF权重分析与改进
【文本分类】基于类信息的TF-IDF权重分析与改进
382 0
【文本分类】基于类信息的TF-IDF权重分析与改进
|
移动开发 算法 算法框架/工具
DL之DCGAN(Keras框架):基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成(保存h5模型→加载模型)
DL之DCGAN(Keras框架):基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成(保存h5模型→加载模型)
DL之DCGAN(Keras框架):基于keras框架利用深度卷积对抗网络DCGAN算法对MNIST数据集实现图像生成(保存h5模型→加载模型)
|
机器学习/深度学习 移动开发 算法框架/工具
DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)
DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)
DL之AlexNet(Keras框架):利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)
|
移动开发 算法框架/工具
DL之VGG16(keras框架):基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)
DL之VGG16(keras框架):基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)
DL之VGG16(keras框架):基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)
|
机器学习/深度学习 算法
DL之DNN:利用DNN【784→50→100→10】算法对MNIST手写数字图片识别数据集进行预测、模型优化
DL之DNN:利用DNN【784→50→100→10】算法对MNIST手写数字图片识别数据集进行预测、模型优化
DL之DNN:利用DNN【784→50→100→10】算法对MNIST手写数字图片识别数据集进行预测、模型优化
|
机器学习/深度学习 算法 算法框架/工具
DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测
DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测
DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测
|
机器学习/深度学习
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能