Nvidia Jetson Nano B01初体验(二)

举报
张辉 发表于 2022/02/03 19:44:43 2022/02/03
【摘要】 本文介绍了Nano的使用过程。

前情回顾:

Nvidia Jetson Nano B01初体验(一) https://bbs.huaweicloud.cn/blogs/330158


(十三)安装Keras

sudo pip3 install keras

验证:

报错了,改为import tensorflow.keras就好了:

(十四)使用Keras训练LeNet网络

参考:https://blog.csdn.net/mr_muli/article/details/80992600

由于上面的原因,将代码修改如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 10 20:04:03 2018

@author: muli
"""

import tensorflow.keras
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras import backend as K

num_classes = 10
img_rows, img_cols = 28, 28

# 通过Keras封装好的API加载MNIST数据。其中trainX就是一个60000 * 28 * 28的数组,
# trainY是每一张图片对应的数字。
(trainX, trainY), (testX, testY) = mnist.load_data()

# 根据对图像编码的格式要求来设置输入层的格式。
if K.image_data_format() == 'channels_first':
    trainX = trainX.reshape(trainX.shape[0], 1, img_rows, img_cols)
    testX = testX.reshape(testX.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    trainX = trainX.reshape(trainX.shape[0], img_rows, img_cols, 1)
    testX = testX.reshape(testX.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)

trainX = trainX.astype('float32')
testX = testX.astype('float32')
trainX /= 255.0
testX /= 255.0

# 将标准答案转化为需要的格式(one-hot编码)。
trainY = tensorflow.keras.utils.to_categorical(trainY, num_classes)
testY = tensorflow.keras.utils.to_categorical(testY, num_classes)


# 2. 通过Keras的API定义卷积神经网络
# 使用Keras API定义模型。
model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5), activation='relu', input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(500, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

# 定义损失函数、优化函数和评测方法。
model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,
              optimizer=tensorflow.keras.optimizers.SGD(),
              metrics=['accuracy'])

# 3. 通过Keras的API训练模型并计算在测试数据上的准确率
model.fit(trainX, trainY,
          batch_size=128,
          epochs=10,
          validation_data=(testX, testY))

# 在测试数据上计算准确率。
score = model.evaluate(testX, testY)
print('Test loss:', score[0])
print('Test accuracy:', score[1])


开始执行:

。。。

开始训练了,一开始loss是1.98左右,

经过了几轮训练,准确率提高到了0.9808,loss降低到了0.0626左右。


(十五)安装jtop

sudo pip3 install jetson-stats

jtop会显示nano的使用情况:

当跑Keras LeNet案例时,jtop显示如下:

说明训练过程是用到了Nano的GPU的。


(十六)探索:安装昇思

尽管MindSpore没有CUDA10.2的aarch64版本。

只有aarch的CPU版本:

Python的版本也只有3.6.9。但是作为昇思开发者的张小白,仍然想在Nano的CPU上跑一下MindSpore试试。

于是,张小白心想:应该先装anaconda for aarch64,这样才能让Nano上有Python3.7.5。

打开 https://www.anaconda.com/products/individual

复制ARM64的安装链接:

wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-aarch64.sh

./Anaconda3-2021.11-Linux-aarch64.sh

按回车继续:

输入yes,回车:

按回车继续:

好像不行,core dump了。

含泪删除:rm -rf ~/anaconda3

打开 https://docs.conda.io/en/latest/miniconda.html#linux-installers

复制下链接:

wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-aarch64.sh

bash ./Miniconda3-py37_4.10.3-Linux-aarch64.sh

好像是一样的coredump,看来conda是不行了。

再次含泪删除:rm -rf ~/miniconda3。


再试下 pyenv和virtualenv吧,原理上:使用 pyenv 可以安装任何版本的 Python,用 virtualenv 创建虚拟环境时指定需要的 Python 版本路径,这样就可以创建任何版本的虚拟环境。

sudo -H pip3 install virtualenv virtualenvwrapper -i https://pypi.tuna.tsinghua.edu.cn/simple/

mkdir ~/.virtualenvs

vi ~/.bashrc

source ~/.bashrc

安装pyenv

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

在~/.bashrc加入以下内容:

source ~/.bashrc 使其生效

查看Python可用版本:

pyenv install --list

。。。

貌似有非常多。

用pyenv装个python3.7.5试试:

pyenv install 3.7.5

感觉下载要蛮长的时间,耐心等待吧。

报缺少ssl库。

sudo apt-get install openssl libssl-dev

按Y继续:

再来一遍:

pyenv install 3.7.5

可以到 /home/zhanghui/.pyenv/versions/3.7.5 目录下看到Python的版本:

刷新pyenv并查看现在的版本:

pyenv rehash

pyenv versions

创建Python 3.7.5的mindspore运行环境(命名为mindspore-py375):

virtualenv -p ~/.pyenv/versions/3.7.5/bin/python mindspore-py375

它会在当前目录下建一个mindspore-py375目录:

source ~/mindspore-py375/bin/activate

这就切换到了Python 3.7.5的环境。

安装mindspore cpu(aarch64) 1.6.0版本:

pip3 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp37-cp37m-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple

报错了。

先安装gmp6.1.2

wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz

xz -d gmp-6.1.2.tar.xz

tar -xvf gmp-6.1.2.tar

cd gmp-6.1.2

./configure

...

make

sudo make install

升级下pip试试:

python -m pip install --upgrade pip

去掉清华源试试:

pip3 install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp37-cp37m-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com

安装速度要慢一点,耐心等待吧。

pip3 install --upgrade setuptools

pip3 install pip==21.3.1

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl

..

wget https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5.tar.gz

 tar -zxvf cmake-3.18.5.tar.gz

cd cmake-3.18.5

./bootstrap

...

make -j8

...

sudo make install -j8

cmake --version

发现 /usr/bin和/usr/local/bin下都有cmake。

将/usr/bin下的cmake改名,重试:

pip3  install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp37-cp37m-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple

好像还是不行。

要不还是换成Python 3.9.0再试一次


退出mindspore-py375环境

deactivate

pyenv install 3.9.0

pyenv rehash

pyenv versions

virtualenv -p ~/.pyenv/versions/3.9.0/bin/python mindspore-py390

source ~/mindspore-py390/bin/activate

pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.0/MindSpore/cpu/aarch64/mindspore-1.6.0-cp39-cp39-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple

这个居然安装成功了!

做个测试看看:

python -c "import mindspore;mindspore.run_check()"

好了,其实CPU也没啥意义。只是张小白不服输而已。要是GPU+aarch64版本能用才是真的有用。

就此别过!

(未完待续)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。