我的镜像源放在网盘,不是最新的,可自行下载。
复制这段内容后打开百度网盘App,操作更方便哦。 链接:https://pan.baidu.com/s/1nzx_4AQXTk3yTQQ3JTUxhw 提取码:247w
刷机教程网上很多这里不做过多赘述。
因为ssh比较方便,我这里在win上用了finalshell的软件通过宿舍的wifi远程ssh连接控制nano。
sudo apt-get update
sudo apt-get full-upgrade
在过程中输入Y确认更新。第二个过程时间根据网络情况可能会花2个小时左右,请耐心等待。完成后如下图。
Jetson-nano的OS镜像已经自带了JetPack,cuda,cudnn,opencv等都已经安装好,并有例子,这些例子安装路径如下所示
TensorRT /usr/src/tensorrt/samples/
CUDA /usr/local/cuda-/samples/
cuDNN /usr/src/cudnn_samples_v7/
Multimedia API /usr/src/tegra_multimedia_api/
VisionWorks /usr/share/visionworks/sources/samples/ /usr/share/visionworks-tracking/sources/samples/ /usr/share/visionworks-sfm/sources/samples/
OpenCV /usr/share/OpenCV/samples/
Jetson-nano中已经安装了CUDA10.0版本,但是此时你如果运行 nvcc -V是不会成功的,需要你把CUDA的路径写入环境变量中。OS中自带Vim工具 ,所以运行下面的命令编辑环境变量。
sudo vim ~/.bashrc
在最后添加
export CUDA_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
然后保存退出
然后需要source下生效下。
source ~/.bashrc
Jetson-nano中已经安装了OpenCV3.3版本,可以使用命令检查OpenCV是否安装就绪
pkg-config opencv --modversion
如果OpenCv安装就绪,会显示版本号,我的版本是3.3.1
Jetson-nano中已经安装好了cuDNN,并有例子可供运行,我们运行一下例子,也正好验证上面的CUDA
cd /usr/src/cudnn_samples_v7/mnistCUDNN #进入例子目录
sudo make #编译一下例子
sudo chmod a+x mnistCUDNN # 为可执行文件添加执行权限
./mnistCUDNN # 执行
安装python的pip工具。
sudo apt install python3-pip
提醒小白:如果出现下图
那应该是有安装命令没执行完毕,可以用下面的命令解决。
安装后pip是9.01版本,需要把它升级到最新版,升级后pip版本为19.1.1。这里面升级后会有一个小Bug,需要手动改一下
python3 -m pip install --upgrade pip #升级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())
修改结束后保存。运行pip3 -V成功后显示
sudo apt-get install python3-scipy
sudo apt-get install python3-pandas
sudo apt-get install python3-matplotlib
sudo apt-get install python3-sklearn
我的jetpack版本是4.2。
所以最多只能支持到pytorch1.4版本。
wget https://nvidia.box.com/shared/static/ncgzus5o23uck9i5oth2n8n06k340l6k.whl -O torch-1.4.0-cp36-cp36m-linux_aarch64.whl
接着
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
pip3 install Cython
pip3 install numpy
pip3 install torch-1.4.0-cp36-cp36m-linux_aarch64.whl
接下来就要安装必不可少的torchvision啦,注意pytroch和torchvision的对应版本。
这里安装torchvision0.5.0。
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch v0.5.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.5.0
sudo python3 setup.py install
cd ../
检查是否成功。
python3
import torch
print(torch.__version__)
print('CUDA available: ' + str(torch.cuda.is_available()))
print('cuDNN version: ' + str(torch.backends.cudnn.version()))
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))
sudo apt-get install python3-pip libhdf5-serial-dev hdf5-tools
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3 --user
经历了漫长的等待,下载过程中好几次断网了几次,不过终于安装成功了,没出什么异常。
安装keras。
sudo pip3 install keras
安装完成后,进入python3,检查一下安装成果,import keras时,下方提示using TensorFlow backend,就证明Keras安装成功并使用TensorFlow作为backend。
测试tensorflow:
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()