今天的目标是安装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)
# 第二层无锡×××医院×××:http://www.bhnfk.com/
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()