关于如何写入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__)
已经写过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卡成功。