2017最后一天的学习-TensorFlow

时间:2022-05-05
本文章向大家介绍2017最后一天的学习-TensorFlow,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

中午吃过饭后,家人都去午休了,我就躺在沙发上看电视,然后稀里糊涂睡着了,突然自己问自己今天写点什么呢,然后在迷糊中突然想到了TensorFlow,好了,那今天就看看它吧。

什么是TensorFlow,如果按照标准的官方说法,就是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。数据流图的概念稍后来讲。

TensorFlow到底有多火呢,按照github 2016年的数据是29622个星,2017年这个数字飙升到了8万多,毫无疑问,是2017年最闪亮的项目。

TensorFlow引起很多的关注和兴趣,可能源自AlphaGo,因为都是来自Google Mind团队。他们的关系非常紧密,可以说互相依存。

如果从我的理解来说,该怎么解释这个技术呢。我个人完全不懂围棋的玩法,就班门弄斧说下围棋的这个事情吧,可能很多是不对的,纯是技术交流。以前的计算机模拟的基本都是穷举的模型,比如有一个步骤有100种可能,那么我就计算100次,每一次得到的结果可能都是局限的,如果要看远一些,那么比如看到后面的5步的走法,按照这个方式理解,那就是100*100*100*100*100种可能性,这种方式结算的结果如果从整体来把握,几乎是不可控的,因为围棋里的玩法不是一个固定的模式,不像你输入一个数据,就立马通过公式计算出一个结果一样。所以说在各种不确定中找到确定的方案,而且能够确定边界,难度应该是相当的大,但是如果换一种思路,比如我把所有不同棋手的学习过程都借鉴过来,比如100个人下棋,在某一个阶段下了某一步棋,对整个棋局都是有利,那么计算机就会标记下来,算是学习了这个技巧,不断的借鉴不断的模仿,然后自我改进,这个过程必然会用的大量的数据和大量的计算,于是乎,各种经验和技巧就不断的迭代,不断的抽象出来,所以说如果让计算机来说某一步具体为什么要那么下,可能没有一个很好的答案,但是它有大把的数据显示这么下一定是目前最好的方案,它会把经验集合起来,而不去做最初穷举的计算。

这方面的实力哪里最强,个人认为还是硅谷,大学里面占据地理优势的就是斯坦福了。今年十一去斯坦福的时候,真是被里面的美景和文化氛围吸引了,非常典型的西班牙建筑特征:红陶筒瓦、手工抹灰墙、陶艺挂件、拱璇门廊。

大名鼎鼎的吴恩达就是斯坦福的教授,也在网易开通了机器学习的公开课,感兴趣自行搜索下。

下午的时候开始简单了解了下,然后开始部署下环境。

TensorFlow的安装可以分为不同的操作系统版本,最早是不支持windows的(现在的版本支持),在Unix,Linux下部署还是很方便的。它提供了大量的Python API,这是大多数深度学习框架都有的; 安装时会根据CPU,GPU的差别有不同的安装类型;目前推荐的操作系统是Ubuntu,不同的Python版本安装也有差别。

我们通过网站(https://www.tensorflow.org/install/)的目录结构就很容易看到TensorFlow的大体情况,支持的平台。

目前最新的版本是1.4,下载链接是:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.4.0-cp27-none-linux_x86_64.whl

我们可以根据pip来安装,当然我任性了一会,在RedHat 6版本上安装了,结果发现过程还是很痛苦的。

如果直接使用pip install --upgrade来安装,很可能会提示网站的安全性问题,我们可以先用wget拿到whl文件,然后使用pip install来安装。

当然后面又碰到了一堆的问题,最郁闷的就是glibc的版本兼容性问题。在RHEL 6中的glibc版本是2.12,而在7中则为2.17,安装TensorFlow需要的版本至少是2.16,所以在RHEL6版本中还需要手工升级,glibc算是核心库,我们运行的命令ls,rm这些都和这个库息息相关,所以操作不当就会导致整个系统不可用,我算是趟上了这个坑,当手工升级glibc的时候,发现到问题的时候,貌似有些晚了,因为ls,rm都可不用了,而我的虚拟机上已经在跑一些测试环境了。有很多数据都没来得及备份,我一边想办法,后悔没完整备份,一边在找补救措施,最后好不容易搞定,赶紧做了两件事情:

  1. 备份认为关键的数据和程序
  2. 对虚拟机开启了快照,随时跟进快照情况进行回退

有了这两个保障,也算是有惊无险。

所以最好还是按照指定的环境,比如Ubuntu来吧。

所以如果说简单些,TensorFlow就是个软件库,我们直接引用即可。

比如一个最简单的TensorFlow程序,引入这个库,然后这样一个3+5的操作还得不到8

import tensorflow as tf
a = tf.add(3, 5)
print(a)
>> Tensor("Add: 0", shape=(), dtype=int32)

这是因为需要开启session,在session中操作能够被执行,简单改进下:

import tensorflow as tf

a = tf.add(3, 5)

sess = tf.Session()

print(sess.run(a))

sess.close()

>> 8

看今天的晚会里面,已经有了全自动码头,看来各行各业都在革命,难啊。

走入IT路,也不容易。

用王家卫《一代宗师》里的台词来简单总结下:

从此只有眼前路,没有身后身,回头无岸