JETSON NANO 深度学习环境搭建

关于如何写入microSD,创建ubuntu的JETSON NANO开发系统,请参考官方教程:https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit

下面直接介绍整个环境安装过程

1.更新源
1)备份源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak    #为防止误操作后无法恢复,先备份原文件sources.list
sudo gedit /etc/apt/sources.list

2)删除所有内容,复制下面源

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe

3)保存后,更新源

sudo apt-get update

2.CUDA安装
jetson nano默认已经安装了CUDA10.0,但是直接运行 nvcc -V是不会成功的,需要你把CUDA的路径写入环境变量中。
1)

sudo gedit  ~/.bashrc

2)在最后添加

export CUBA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.0/bin:$PATH

3)保存后退出,最后source这个文件

source ~/.bashrc

4)验证CUDA是否导入成功:

nvcc -V

3.安装相关包
1)安装pip

sudo apt-get install python3-pip python3-dev

2)升级pip

python3 -m pip install --upgrade pip  #升级pip

3)修改pip

sudo vim /usr/bin/pip3   #打开pip3文件

原来:

from pip import main
if __name__ == '__main__':
    sys.exit(main())

改为:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

4)查看pip安装是否成功

pip3 -V     #出现版本等信息说明安装成功

5)安装tensorflow-gpu

pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3 --user

6)运行测试时,numpy包可能会报错,这时需要升级一下包

sudo pip3 install --upgrade numpy

7)测试tensorflow-gpu是否安装成功

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
 
x_data = np.linspace(-0.5, 0.5, 200)[:, np.newaxis]
noise = np.random.normal(0, 0.02, x_data.shape)
y_data = np.square(x_data) + noise
 
x = tf.placeholder(tf.float32, [None, 1])
y = tf.placeholder(tf.float32, [None, 1])
 
# 输入层一个神经元,输出层一个神经元,中间10个
# 第一层
Weights_L1 = tf.Variable(tf.random.normal([1, 10]))
Biases_L1 = tf.Variable(tf.zeros([1, 10]))
Wx_plus_b_L1 = tf.matmul(x, Weights_L1) + Biases_L1
L1 = tf.nn.tanh(Wx_plus_b_L1)
 
# 第二层
Weights_L2 = tf.Variable(tf.random.normal([10, 1]))
Biases_L2 = tf.Variable(tf.zeros([1, 1]))
Wx_plus_b_L2 = tf.matmul(L1, Weights_L2) + Biases_L2
pred = tf.nn.tanh(Wx_plus_b_L2)
 
# 损失函数
loss = tf.reduce_mean(tf.square(y - pred))
 
# 训练
train = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
 
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(2000):
        sess.run(train, feed_dict={x: x_data, y: y_data})
        print("第{0}次,loss = {1}".format(i, sess.run(loss,feed_dict={x: x_data, y: y_data})))
    pred_vaule = sess.run(pred, feed_dict={x: x_data})
    plt.figure()
    plt.scatter(x_data, y_data)
    plt.plot(x_data, pred_vaule, 'r-', lw=5)
    plt.show()

8)pytorch安装
找到对应版本的pytorch,使用命令安装:

sudo pip3 install torch-1.1.0-cp36-cp36m-linux_aarch64.whl

可从百度网盘下载torch-1.1.0-cp36-cp36m-linux_aarch64.whl,百度网盘链接和提取码:链接:https://pan.baidu.com/s/1zCfAPXhQh59-0rrZLWbUpg 提取码:1xe7

9)验证pytorch安装是否成功

import torch
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
a = torch.cuda.FloatTensor(2).zero_()
print('Tensor a = ' + str(a))
b = torch.randn(2).cuda()
print('Tensor b = ' + str(b))
c = a + b	
print('Tensor c = ' + str(c))

10)安装torchvision

git clone -b v0.3.0 https://github.com/pytorch/vision torchvision
cd torchvision
sudo python3 setup.py install

11)测试torchvision

import torchvision
print(torchvision.__version__)

下面介绍格式化SD卡的过程(需要重新写系统时)

已经写过jetson系统的SD卡,格式化时会弹出很多的分区,在windows下格式化比较麻烦,这里介绍在ubuntu下格式化的过程,要非常小心!
1.将SD卡插入读卡器
2.先确认好原来ubuntu系统的分区情况,等下使用命令卸载和格式化时,一定不要搞错名字了

broliao@ljx:~$ ls /dev/sd
sda   sda1  sda2  sda3  sda4 

可以看到,原来磁盘是sda开头的。
3.插上插了SD卡的读卡器,再用命令查看下(按Tab键补全查看)

broliao@ljx:~$ ls /dev/sd
sda    sda2   sda4   sdb1   sdb11  sdb2   sdb4   sdb6   sdb8   
sda1   sda3   sdb    sdb10  sdb12  sdb3   sdb5   sdb7   sdb9 

可以看到,增加了sdb开头的。
4.使用命令卸载这些分区

broliao@ljx:~$ sudo umount /dev/sdb*

或着一个一个的卸载

sudo umount /dev/sdb1

千万注意卸载分区的名字,也就是经过第3步后增加的那些分区的名字,也就是这里sdb开头的。
5.使用命令格式化这些分区

sudo mkfs.ext4 /dev/sdb
mke2fs 1.44.1 (24-Mar-2018)
在 gpt 中发现一个 /dev/sdb 分区表
Proceed anyway? (y,N) y
创建含有 7791744 个块(每块 4k)和 1949696 个inode的文件系统
文件系统UUID:0cab786c-8762-48b4-89fb-21c2711986ad
超级块的备份存储于下列块: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(32768 个块) 完成
写入超级块和文件系统账户统计信息: 已完成

6.查看格式化后的结果

broliao@ljx:~$ ls /dev/sd
sda   sda1  sda2  sda3  sda4  sdb

只剩下sdb,说明格式化SD卡成功。

你可能感兴趣的:(JETSON NANO 深度学习环境搭建)