PaddlePaddle——手写数字识别DEMO
生活随笔
收集整理的這篇文章主要介紹了
PaddlePaddle——手写数字识别DEMO
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/01_quick_start_cn.html?
運行環境
PaddlePaddle==2.0.0?
DEMO1
#!usr/bin/env python # -*- coding:utf-8 _*- """ @version: 0.0.1 @author: ShenTuZhiGang @time: 2021/01/30 15:13 @file: paddlepaddle.py @function: @last modified by: ShenTuZhiGang @last modified time: 2021/01/30 15:13 """ import paddle from paddle.vision.transforms import ToTensor # 加載內置數據集 train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=ToTensor()) val_dataset = paddle.vision.datasets.MNIST(mode='test', transform=ToTensor()) # 模型搭建 mnist = paddle.nn.Sequential(paddle.nn.Flatten(),paddle.nn.Linear(784, 512),paddle.nn.ReLU(),paddle.nn.Dropout(0.2),paddle.nn.Linear(512, 10) ) model = paddle.Model(mnist)# 模型訓練相關配置,準備損失計算方法,優化器和精度計算方法 model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),paddle.nn.CrossEntropyLoss(),paddle.metric.Accuracy())# 開始模型訓練 model.fit(train_dataset,epochs=5,batch_size=64,verbose=1) # 模型評估 model.evaluate(val_dataset, verbose=0)DEMO2?
#!usr/bin/env python # -*- coding:utf-8 _*- """ @version: 0.0.1 @author: ShenTuZhiGang @time: 2021/01/30 15:13 @file: paddlepaddle.py @function: @last modified by: ShenTuZhiGang @last modified time: 2021/01/30 15:13 """ import numpy as np import matplotlib.pyplot as plt from PIL import Image import paddle from paddle.vision.transforms import ToTensor# 加載內置數據集 train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=ToTensor()) val_dataset = paddle.vision.datasets.MNIST(mode='test', transform=ToTensor()) train_images = train_dataset.images train_labels = train_dataset.labels test_images = val_dataset.images test_labels = val_dataset.labels class_names = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']plt.figure(figsize=(10, 10)) for i in range(25):plt.subplot(5, 5, i + 1)plt.xticks([])plt.yticks([])plt.grid(False)plt.imshow(Image.fromarray(np.reshape(train_images[i], newshape=(28, 28))), cmap=plt.cm.binary)plt.xlabel(class_names[train_labels[i][0]]) plt.show() # 模型搭建 mnist = paddle.nn.Sequential(paddle.nn.Flatten(),paddle.nn.Linear(784, 512),paddle.nn.ReLU(),paddle.nn.Dropout(0.2),paddle.nn.Linear(512, 10) ) model = paddle.Model(mnist)# 模型訓練相關配置,準備損失計算方法,優化器和精度計算方法 model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),paddle.nn.CrossEntropyLoss(),paddle.metric.Accuracy()) # 開始模型訓練 model.fit(train_dataset,epochs=5,batch_size=64,verbose=1) model.summary() # 模型評估 test = model.evaluate(val_dataset, verbose=0)print('\nTest accuracy:', test) probability_model = paddle.nn.Sequential(mnist,paddle.nn.Softmax()) predictions = probability_model(paddle.to_tensor(test_images)).numpy() print(predictions[0]) print(np.argmax(predictions[0])) print(test_labels[0])def plot_image(i, predictions_array, true_label, img):predictions_array, true_label, img = predictions_array, true_label[i][0], img[i]plt.grid(False)plt.xticks([])plt.yticks([])plt.imshow(Image.fromarray(np.reshape(img, newshape=(28, 28))), cmap=plt.cm.binary)predicted_label = np.argmax(predictions_array)if predicted_label == true_label:color = 'blue'else:color = 'red'plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],100 * np.max(predictions_array),class_names[true_label]),color=color)def plot_value_array(i, predictions_array, true_label):predictions_array, true_label = predictions_array, true_label[i][0]plt.grid(False)plt.xticks(range(10))plt.yticks([])thisplot = plt.bar(range(10), predictions_array, color="#777777")plt.ylim([0, 1])predicted_label = np.argmax(predictions_array)thisplot[predicted_label].set_color('red')thisplot[true_label].set_color('blue')i = 0 plt.figure(figsize=(6, 3)) plt.subplot(1, 2, 1) plot_image(i, predictions[i], test_labels, test_images) plt.subplot(1, 2, 2) plot_value_array(i, predictions[i], test_labels) plt.show()i = 12 plt.figure(figsize=(6, 3)) plt.subplot(1, 2, 1) plot_image(i, predictions[i], test_labels, test_images) plt.subplot(1, 2, 2) plot_value_array(i, predictions[i], test_labels) plt.show()# Plot the first X test images, their predicted labels, and the true labels. # Color correct predictions in blue and incorrect predictions in red. num_rows = 5 num_cols = 3 num_images = num_rows * num_cols plt.figure(figsize=(2 * 2 * num_cols, 2 * num_rows)) for i in range(num_images):plt.subplot(num_rows, 2 * num_cols, 2 * i + 1)plot_image(i, predictions[i], test_labels, test_images)plt.subplot(num_rows, 2 * num_cols, 2 * i + 2)plot_value_array(i, predictions[i], test_labels) plt.tight_layout() plt.show()# Grab an image from the test dataset. img = test_images[1]print(img.shape)# Add the image to a batch where it's the only member. img = (np.expand_dims(img, 0))print(img.shape)predictions_single = model.predict([img])print(predictions_single)plot_value_array(1, predictions_single[0][0][0], test_labels) _ = plt.xticks(range(10), class_names, rotation=45)print(np.argmax(predictions_single[0][0]))?
參考文章
基本分類:對服裝圖像進行分類
TensorFlow 教程——手寫數字識別
總結
以上是生活随笔為你收集整理的PaddlePaddle——手写数字识别DEMO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PaddleOCR——Docker环境下
- 下一篇: Spring Cloud——基于Open