已解决
【深度学习】手写数字识别
来自网友在路上 192892提问 提问时间:2023-11-11 15:38:44阅读次数: 92
最佳答案 问答题库928位专家为你答疑解惑
文章目录
- 一、步骤
- 1.导包
- 2.查看数据集图片
- 3.多层感知器
- 4.结果
- 总结
一、步骤
1.导包
#导入需要的包
import numpy as np
import paddle as paddle
import paddle.fluid as fluid
from PIL import Image
import matplotlib.pyplot as plt
import os
from paddle.fluid.dygraph import Linear
print("本教程基于Paddle的版本号为:"+paddle.__version__)
from paddle.vision.transforms import Compose, Normalize
transform = Compose([Normalize(mean=[127.5],std=[127.5],data_format='CHW')])
print('下载并加载训练数据')
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)
print('加载完成')
2.查看数据集图片
train_data0, train_label_0 = train_dataset[0][0],train_dataset[0][1]
train_data0 = train_data0.reshape([28,28])
plt.figure(figsize=(2,2))
print(plt.imshow(train_data0, cmap=plt.cm.binary))
print('train_data0 的标签为: ' + str(train_label_0))
print(train_dataset[0],type(train_dataset[0]))
3.多层感知器
# 定义多层感知器
#动态图定义多层感知器
class multilayer_perceptron(paddle.nn.Layer):def __init__(self):super(multilayer_perceptron,self).__init__()self.fc1 = paddle.fluid.dygraph.Linear(input_dim=28*28, output_dim=100, act='relu')self.fc2 = paddle.fluid.dygraph.Linear(input_dim=100, output_dim=100, act='relu')self.fc3 = paddle.fluid.dygraph.Linear(input_dim=100, output_dim=10, act='softmax')def forward(self, input_):x = fluid.layers.reshape(input_, [input_.shape[0], -1])x = self.fc1(x)x = self.fc2(x)y = self.fc3(x)return y
from paddle.metric import Accuracy
use_gpu = False
paddle.set_device('gpu:0') if use_gpu else paddle.set_device('cpu')
# 用Model封装模型model = paddle.Model(multilayer_perceptron()) # 定义优化器optim = paddle.optimizer.Adam(learning_rate=0.001,parameters=model.parameters())# 配置模型 优化器 损失函数 评估标准
model.prepare(optim,paddle.nn.CrossEntropyLoss(),Accuracy())# 训练保存并验证模型
model.fit(train_dataset,test_dataset,epochs=10,batch_size=64,save_dir='multilayer_perceptron',verbose=1)
#验证模型
model.evaluate(test_dataset, verbose=1)
4.结果
#获取测试集的第一个图片
test_data0, test_label_0 = test_dataset[0][0],test_dataset[0][1]
test_data0 = test_data0.reshape([28,28])
plt.figure(figsize=(2,2))
#展示测试集中的第一个图片
print(plt.imshow(test_data0, cmap=plt.cm.binary))
print('test_data0 的标签为: ' + str(test_label_0))
#模型预测
result = model.predict(test_dataset, batch_size=1)
#打印模型预测的结果
print('test_data0 预测的数值为:%d' % np.argsort(result[0][0])[0][-1])
总结
通过对手写识别项目的练习,对深度学习的理解更深一步
查看全文
99%的人还看了
相似问题
- 最新AIGC创作系统ChatGPT系统源码,支持最新GPT-4-Turbo模型,支持DALL-E3文生图,图片对话理解功能
- 思维模型 等待效应
- FinGPT:金融垂类大模型架构
- 人工智能基础_机器学习044_使用逻辑回归模型计算逻辑回归概率_以及_逻辑回归代码实现与手动计算概率对比---人工智能工作笔记0084
- Pytorch完整的模型训练套路
- Doris数据模型的选择建议(十三)
- python自动化标注工具+自定义目标P图替换+深度学习大模型(代码+教程+告别手动标注)
- ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
- Python实现WOA智能鲸鱼优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战
- 扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件
猜你感兴趣
版权申明
本文"【深度学习】手写数字识别":http://eshow365.cn/6-37731-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!