张小白带你玩转Atlas 200DK+CANN 5.0.4+MindStudio 3.0.4(13)尝试昇思跑LeNet-1
十三、在Atlas 200DK上使用MindSpore训练LeNet网络
手写数字识别LeNet是深度学习最简单入门的神经网络。一般拿它来入门AI框架最合适不过了。我们来试一下,看看如何在200DK上跑LeNet:
1、下载models代码仓
git clone https://gitee.com/mindspore/models.git
2、准备MNIST数据集
cd models/official/cv/lenet
mkdir MNIST
mkdir ckpt
cd MNIST
下载MNIST数据集:
wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
按照README指定的方式解压:
gzip -d *.gz
mkdir train
mkdir test
mv train*ubyte train/
mv t10k* test/
sudo apt install tree
tree 查看目录结构:
3、训练LeNet网络
cd ..
开始训练:
python train.py --data_path=./MNIST/ --device_target="Ascend" --ckpt_path=./ckpt
报语法错误。
检查一下:
原来200DK的python缺省是Python2版本,print语句不支持 flush=True这种语法。
那就换成python3试一下:
没装yaml,那就装一下pyyaml
python3 -m pip install pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple
这里一开始没有使用 --user,所以报权限错误,后来增加--user参数安装成功。
重新训练:
python3 train.py --data_path=./MNIST/ --device_target="Ascend" --ckpt_path=./ckpt
报错如下:
[CRITICAL] CORE(2461,fffeffff81a0,python3):2022-04-17-02:17:09.597.099 [mindspore/core/utils/ms_context.cc:130] CreateTensorPrintThread] Get acltdt handle failed
Traceback (most recent call last):
File "train.py", line 68, in <module>
train_lenet()
File "/home/HwHiAiUser/models/official/cv/lenet/src/model_utils/moxing_adapter.py", line 108, in wrapped_func
run_func(*args, **kwargs)
File "train.py", line 48, in train_lenet
network = LeNet5(config.num_classes)
File "/home/HwHiAiUser/models/official/cv/lenet/src/lenet.py", line 35, in __init__
super(LeNet5, self).__init__()
File "/home/HwHiAiUser/.local/lib/python3.7/site-packages/mindspore/nn/cell.py", line 119, in __init__
init_pipeline()
RuntimeError: mindspore/core/utils/ms_context.cc:130 CreateTensorPrintThread] Get acltdt handle failed
张小白发帖询问这是什么问题,专家回答道:
张小白恍然大悟。。。在Atlas 200DK上是无法进行模型训练的。
(未完待续)
- 点赞
- 收藏
- 关注作者
评论(0)