玩转Jetson Nano(三)安装TensorFlow GPU

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/beckhans/article/details/89146881

今天的目标是安装TensorFlow GPU版本,安装TensorFlow GPU版本需要成功配置好CUDA,没有配制好的请移步上一篇博文。不过在安装TensorFlow GPU之前,有一些机器学习必须用到的安装包也需要来安装一下。

1. 安装pip

因为Jetson Nano中已经安装了Python3.6版本,所以安装pip还是比较简单的

sudo apt-get install python3-pip python3-dev

安装后pip是9.01版本,需要把它升级到最新版,升级后pip版本为19.0.3。这里面升级后会有一个小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成功后显示

beckhans@Jetson:~$ pip3 -V
pip 19.0.3 from /home/beckhans/.local/lib/python3.6/site-packages/pip (python 3.6)

2. 安装那些机器学习领域如雷贯耳的包

sudo apt-get install python3-scipy
sudo apt-get install python3-pandas
sudo apt-get install python3-sklearn

 这里面没有numpy和matplotlib,不是说他俩不重要,而是安装其它包时,这两个也会被自动安装。

3. 安装TensorFlow GPU版

 (1)确认CUDA已经被正常安装

nvcc -V

如果能看到CUDA版本号,即为正确安装

(2)安装所需要的包

sudo apt-get install python3-pip libhdf5-serial-dev hdf5-tools

(3)安装TensorFlow GPU版本 

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

经历了漫长的等待,下载过程中好几次断网了几次,不过终于安装成功了,没出什么异常。

最近有很多朋友反应NViada网站的TensorFlow下载太慢,我把官网上的下载下来放百度网盘了,大家下载前先点赞,不点不给用,哈哈哈哈!链接:https://pan.baidu.com/s/17Iq4XXfSR4CDDiQS6NAlOA  提取码:2fy3 
 

4. 安装Keras

既然有了TensorFlow,那就把Keras也安装上。我自己很喜欢keras,让TensorFlow变得更加简单

sudo pip3 install keras

安装完成后,进入python3,检查一下安装成果,import keras时,下方提示using TensorFlow backend,就证明Keras安装成功并使用TensorFlow作为backend。

beckhans@Jetson:~$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keras
Using TensorFlow backend.
>>> 

5. 测试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()

今天就写到这吧,最近几天在研究Jetson Nano中带的两个案例,还没有跑通,跑通了再来分享吧!

展开阅读全文

没有更多推荐了,返回首页