手寫數字識別-paddle版

平臺

https://www.paddlepaddle.org.cn/

環境變量

# 路徑
data_dir = '../data'
model_dir = 'inference_model'
base_dir = '{}/{}'.format(data_dir, model_dir)

# 模型名稱
model_name = 'minist'
model_file = '{}/{}'.format(base_dir, model_name)
model_dynamic_file = '{}/{}/{}'.format(data_dir,'dynamic_model', model_name)

加載模型,並推理

import paddle
import numpy as np
# 引用 paddle inference 預測庫
import paddle.inference as paddle_infer
from paddle.vision.transforms import Normalize


def main():
    # 歸一化函數,對[0-255]數據進行歸一化,這樣好處理
    transform = Normalize(mean=[127.5], std=[127.5], data_format='CHW')
    test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)

    # 設置輸入
    fake_input = np.asarray(test_dataset[1][0]).reshape([1,1,28,28])
#     print(fake_input)
    
    # 設置Config
    config = set_config()

    # 創建Predictor
    predictor = paddle_infer.create_predictor(config)

    # 獲取輸入的名稱
    input_names = predictor.get_input_names()
    input_tensor = predictor.get_input_handle(input_names[0])

    # 設置輸入
#     fake_input = np.random.randn(1,784).astype("float32")
    input_tensor.copy_from_cpu(fake_input)

    # 運行predictor
    predictor.run()

    # 獲取輸出
    output_names = predictor.get_output_names()
    output_tensor = predictor.get_output_handle(output_names[0])
    output_data = output_tensor.copy_to_cpu() # numpy.ndarray類型
    print("輸出的形狀如下: ")
    print(output_data.shape)
    print(output_data.argmax())

def set_config():
    pdmodel_file = '{}.pdmodel'.format(model_file)
    pdiparams_file = '{}.pdiparams'.format(model_file)
    print('模型: {}'.format(pdmodel_file))
    config = paddle_infer.Config(pdmodel_file, pdiparams_file)
    config.disable_gpu()
    return config

if __name__ == "__main__":
    main()

可視化圖片

import paddle
# 可視化圖片
from matplotlib import pyplot as plt

test_dataset = paddle.vision.datasets.MNIST(mode='test')
# 從測試集中取出一張圖片
img, label = test_dataset[1]
print(img)
plt.imshow(img)
plt.show()

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章