什么是TensorFlow
首先解释下什么是tensorflow,还是直接看下百度百科里面的说明:
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。
TensorFlow在Centos下安装
python安装
现在linux下面一般都安装了python,不过都是2.x版本的,虽然也可以用,最好还是安装3.x的,下面说明3.x的安装方法。
先安装python3依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
安装python3
采用源码编译安装
1 wget https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz
2 tar xvf Python-3.5.0.tgz
3 cd Python-3.5.0
4 ./configure --prefix=/home/aus/python3 --enable-shared
5 make && make install
6 ln -s /usr/local/bin/python3.5 /usr/bin/python
7 ln –s /usr/local/bin/python3.5 python
安装TensorFlow
pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.1-cp35-cp35m-linux_x86_64.whl
注意: cp35是适应python3.5版本,如果是python2.x记得更换下: tensorflow-0.6.0-cp27-none-linux_x86_64.whl (python2.7)
测试TensorFlow
本来以为很简单的就安装好了,谁知道import时候报错:
1)GLIBCXX版本不对报错信息
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by /usr/local/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so)
原因:
libstdc++.so.6的版本有点低不包含tensorflow运行需要的GLIBCXX_3.4.19库;
可以通过stings /usr/lib64/libstdc++.so.6|grep GLIBCXX查看现在支持的版本。
上网找了下,最后只能选择源码编译安装,主要参考:
这篇文章以及[另一篇文章] (http://blog.csdn.net/kuaile123/article/details/20848123)
重新连接:
ln -s /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6
2)GLIBC版本不对错误
Im
portError: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by /usr/local/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so)
下载一个 glibc2.19版本的源码,编译安装。
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
参考文章
测试代码1:
import tensorflow as tf
hello = tf.constant('Hello,TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
测试代码2:
cd /usr/local/lib/python3.5/site-packages/tensorflow/examples/tutorials/
import mnist.input_data as inputdata
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
import tensorflow as tf
sess = tf.InteractiveSession()
x = tf.placeholder("float", [None, 784])
y_= tf.placeholder("float",shape=[None,10])
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x,W)+b)
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
for i in range(1000):
batch = mnist.train.next_batch(50)
train_step.run(feed_dict={x: batch[0], y_: batch[1]})
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
print (accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels}))