一、摘要
近期本人在研究PaddlePaddle,根据官网的操作步骤进行安装后还是会出现一些问题,已经整理成如下的博文,如有需要请自取。
Windows虚拟机下安装PaddlePaddle(附报错ImportError解决方法)_圈圈∞的博客-CSDN博客我在安装前准备了一台windows云主机,为了方便大家安装,在引用官网上的教程的同时配合本人安装时的安装步骤进行注释详解。因为我在验证安装时,我并不是一次性就安装成功的,报错是“ImportError: DLL load failed while importing libpaddle: 找不到指定的模块。https://blog.csdn.net/qq_36344652/article/details/132301364?spm=1001.2014.3001.5502在安装完PaddlePaddle后,本人继续开展深度学习的实践,跟着PaddlePaddle官网(链接如下)中手写数字识别任务进行实践,只是我的实践过程中还是遇到了问题。因此,整理这篇博文,为了记录下自己的实践过程以自用,同时也希望帮助需要的你。
二、实践过程
步骤一:安装python的matplotlib 库和 numpy 库
# 使用 pip 工具安装 matplotlib 和 numpy
! python3 -m pip install matplotlib numpy -i https://mirror.baidu.com/pypi/simple
📑我使用的是python,命令行修改为(如图):
python -m pip install matplotlib numpy -i https://mirror.baidu.com/pypi/simple
步骤二:pycharm创建python文件
源码
import paddle
import numpy as np
from paddle.vision.transforms import Normalize
transform = Normalize(mean=[127.5], std=[127.5], data_format='CHW')
# 下载数据集并初始化 DataSet
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)
# 模型组网并初始化网络
lenet = paddle.vision.models.LeNet(num_classes=10)
model = paddle.Model(lenet)
# 模型训练的配置准备,准备损失函数,优化器和评价指标
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(test_dataset, batch_size=64, verbose=1)
# 保存模型
model.save('./output/mnist')
# 加载模型
model.load('output/mnist')
# 从测试集中取出一张图片
img, label = test_dataset[0]
# 将图片shape从1*28*28变为1*1*28*28,增加一个batch维度,以匹配模型输入格式要求
img_batch = np.expand_dims(img.astype('float32'), axis=0)
# 执行推理并打印结果,此处predict_batch返回的是一个list,取出其中数据获得预测结果
out = model.predict_batch(img_batch)[0]
pred_label = out.argmax()
print('true label: {}, pred label: {}'.format(label[0], pred_label))
# 可视化图片
from matplotlib import pyplot as plt
plt.imshow(img[0])
正确的运行结果
三、过程中遇到的问题
3.1 No module named“paddle”等import带来的问题
3.1.1 报错截图
3.1.2 解决过程
- 打开项目的解释器,发现需要import的包不在列表里;
- Add interpreter时无法勾选“Inherit global site-packages”;
- 我的处理办法:【New Project】—勾选【Inherit global site-packages】,发现解释器中已包含我所需要的paddle、numpy等包,问题解决,运行也无报错。但是出现“PEP 8: E402 module level import not at top of file”告警,处理方法见本文3.2。
3.2 PEP 8: E402 module level import not at top of file
3.2.1 告警截图
3.2.2 解决过程
- 此告警(见告警截图)的意思是“from matplotlib import pyplot as plt”应该与其他的import一起放在代码的最前面。
- 将“from matplotlib import pyplot as plt”与其他import一起后,告警解除。
3.3 未显示图片
3.3.1 运行结果
3.3.2 问题
问题❓:代码中包含“plt.imshow(img[0])”,但是,结果未显示图片(如下)
3.3.3 解决过程
- 导入pylab包,在代码首段增加“import pylab”;
- 在“plt.imshow(img[0])”后,增加一行代码“pylab.show()”,运行结果如下。
-------------------------------------------------------------END--------------------------------------------------------------
整理不易,需要大家的👍鼓励和支持,谢谢🌹