日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用paddlepaddle进行手写数字识别

發布時間:2024/1/8 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用paddlepaddle进行手写数字识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀

MNIST手寫數字數據集作為深度學習入門的數據集是我們經常都會使用到的,包含了0~9共10個數字類別的圖片,每張圖片的大小為28X28,一共包含了60000張訓練集圖片和10000張測試集圖片。

使用PaddlePadlle進行手寫數字識別

  • 導包
import paddle from paddle.vision.transforms import Normalize
  • 加載MNIST數據集
#數據的歸一化處理 transform = Normalize(mean=[127.5],std=[127.5],data_format="CHW")#加載MNIST的訓練數據集 train_mnist_dataset = paddle.vision.datasets.MNIST(mode="train",transform=transform) #加載MNIST的測試數據集 test_mnist_dataset = paddle.vision.datasets.MNIST(mode="test",transform=transform)
  • 展示手寫數字的圖片
import numpy as np import matplotlib.pyplot as plt#獲取MNIST數據的圖片和對應的標簽 mnist_image,mnist_label = train_mnist_dataset[0][0],train_mnist_dataset[0][1] #調整MNIST圖片的大小 mnist_image = mnist_image.reshape((28,28)) plt.figure(figsize=(2,2)) plt.imshow(mnist_image,cmap=plt.cm.binary)

  • 使用paddlepaddle定義神經網絡模型

這里我們先使用一個比較簡單的3層感知機來構建一個模型,第一層全連接層的輸出是256,第二層全連接層的輸出是128,第三層全連接層的輸出是10,正好對應10個不同的數字類別

class PerceptronMNIST(paddle.nn.Layer):def __init__(self,in_features,classes_num):super(PerceptronMNIST,self).__init__()#將輸出數據的shape由(-1,1,28,28)變為(-1,784)self.flatten = paddle.nn.Flatten()#感知機的第一層全連接層self.fc1 = paddle.nn.Linear(in_features=in_features,out_features=256)#激活函數self.relu1 = paddle.nn.ReLU()#感知機的第二層全連接層self.fc2 = paddle.nn.Linear(in_features=256,out_features=128)#激活函數self.relu2 = paddle.nn.ReLU()#感知機的第三層全連接層self.fc3 = paddle.nn.Linear(in_features=128,out_features=classes_num)def forward(self,x):x = self.flatten(x)x = self.fc1(x)x = self.relu1(x)x = self.fc2(x)x = self.relu2(x)x = self.fc3(x)return x
  • 打印網絡模型的結構
#使用PaddlePaddle封裝模型model = paddle.Model(PerceptronMNIST(in_features=28*28,classes_num=10))#輸出網絡的結構model.summary((-1,1,28,28))

  • 定義優化算法和Loss
#配置模型 model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),#使用Adam優化算法paddle.nn.CrossEntropyLoss(),#使用CrossEntropyLoss作為損失函數paddle.metric.Accuracy())#使用Accuracy計算精度
  • 訓練模型
model.fit(train_mnist_dataset,#設置訓練數據epochs=10, #定義訓練的epochsbatch_size=128, #設置batch_sizeverbose=1) #設置日志的輸出格式

  • 評估模型
model.evaluate(test_mnist_dataset,verbose=1)

  • 模型預測
results = model.predict(test_mnist_dataset) #獲取概率最大的label pred_label = np.argsort(results) print("圖片的預測標簽為:{}".format(pred_label[0][0][-1][0]))

總結

以上是生活随笔為你收集整理的使用paddlepaddle进行手写数字识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。