Win10配置人工智能学习平台Tensorflow的正确姿势

專 欄

那只猫,Python中文社区专栏作者,Python中文社区新Logo设计人,纯种非CS科班数据分析人,沉迷Keras。在Cambridge做了点小事,深度学习的小学生。❈

目录:

  1. Tensorflow在Windows10的安装
  2. Tensorflow,那么什么是Tensor?
  3. 为什么Tensorflow那么受欢迎?
  4. CNTK分析。
  5. Reference

Tensorflow在Windows10的安装

在Windows玩了很久的Tensorflow,但由于某些不可抗因素,硬是格式化了Windows。格式化完毕后立马装上Anaconda3,结果就在一个大坑里默默流眼泪——Tensorflow不支持最新的Python3.6。pip的效率是真的不算高,于是在下载都能失败好几次的情况下,我硬是被卡了半个多月。这篇教程算是给整个Tensorflow的Win平台填上最新的坑。(近乎所有的教程都是在Python3.6发布之前写的)

首先下载Anaconda3

注意,Tensorflow在Win环境下只支持Python3

同时,Anaconda3的下载不能下最新版,也就是只支持64位Python3.5。

而后就是经典的:

pip install tensorflow #如果你用CPU的话;

pip install tensorflow-gpu#如果你用GPU加速的话

这也是一般的套路告诉你的。不过其实完全可以直接去pypl的资源上直接迅雷啊什么的下下来,比较快、省时间。而后打开cmd,pip install 直接拖入你的文件到cmd,而后麻溜回车。

你以为就这么天真的:

import tensorflow as tf

print('TensorFlow version: {0}'.format(tf.__version__))

hello = tf.constant('Hello, TensorFlow!')

sess = tf.Session()

print(sess.run(hello))

你就会得到:

来自tensorflow的嘲讽。

在Google中沉浮数日,发现了大佬的解决方案:

pip install --upgrade http://ci.tensorflow.org/view/Nightly/job/nightly-win/85/DEVICE=cpu,OS=windows/artifact

安装完毕之后,可以通过。

在这里,问过Tensorflow的作者之一——Adriano Carmezim

得到的回答是酱紫的:

>Apparently this issue is fixed at HEAD but didn't make it to the release build.

也就是说,这是作者的坑。。。忽略就好。。。

Tensorflow,那么什么是Tensor?

tensor的对应到中文的解释是张量。为什么要讲tensor,主要就是鼎鼎大名的keras默认使用Tensorflow作为后端来进行张量的操作。而且tensor这个概念属于一种底层概念,如果一个做Deep Learning的人没有办法理解tensor,那么其使用Deep Learning的技巧和创新性也十分有限。

张量这个概念比较复杂,tensor可以理解成一种多维数组,张量可以看作是向量、矩阵的自然推广,表示广泛的数据类型。

复杂点并不是在计算机意义上的多维数组表示方法,往往比喻有降低复杂性的作用。

零阶张量是普通的数,是张量的最底层的存在,也是最容易理解的一个部分。

一阶张量是向量,是数的有序的组合的结果。

张量的核心便在于——组合。

同样的,将一阶张量再进行有序组合,得到二阶张量。线性代数告诉我们一个矩阵可以表示为n个列向量的和,相比大家能够猜到二阶张量可以对应到我们已经理解的矩阵。

如此,不断的迭代加深。

由于可以迭代到很高层,在高层以上,我们就不费心思研究Tensor在我们的认知中的对应关系。研究物理的前辈们很早就意识到向量和张量作为实体具有物理上的意义的,它超越了它们的分量所被表述的(经常是任意的)坐标系。

其实张量的理解,理解成一种不断组合不断升级并且没有天花板的高级数据类型就可以了。

比较像人话的,是无分量方法。它把张量首先视为抽象对象,表达了多线性概念的某种确定类型。操作张量的规则作为从线性代数到多重线性代数的推广出现。其方式是更现代的无分量向量方法在基于分量的方法用于给出向量概念的基本引例之后就取代了传统的基于分量的方法。

为什么Tensorflow那么受欢迎?

TensorFlow是相对高阶的机器学习库,用户可以方便地用它设计神经网络结构,而不必为了追求高效率的实现亲自写C++或CUDA18代码。在Tensorflow上可以很麻溜的跑自己的模型而不用担心自己的Neural Network的细节部分。而Tensorflow作为神级框架Keras的默认back-end以及Google帅气的号称秒世界的Edward库,无不体现Tensorflow目前的领军地位。

要说做DL的人最火大什么,无非就是各种细节上的纠结和各种求导,这个Theano做的也不错。不过使用Python时有一个影响效率的问题是,每一个mini-batch要从Python中feed到网络中,这个过程在mini-batch的数据量很小或者运算时间很短时,可能会带来影响比较大的延迟。

但是在这里说一下Theano的一个坏话:

配置真的很烦!编译真的很慢!

编译需要MinGW支持,MinGW据说在国内经常翻车。对于新人来说,一个import theano 就弄出一大堆C/C++代码,不免被震撼到。而后又要做许多的改造才能让theano 俯首称臣,这个自学轨迹不要太崎岖。

TensorFlow在定义新网络结构时,Theano通常需要长时间的编译,因此尝试新模型需要比较大的代价,而TensorFlow完全没有这个问题。

Tensorflow的教程真的是一搜一大把,在youtube上一搜,各种应用和教程五花八门,并且质量还普遍不低——毕竟玩DL的人不是学界大牛就是Keep Learning的典范。

内置的TF.Learn和TF.Slim等上层组件可以帮助快速地设计新网络,并且兼容Scikit-learn estimator接口,可以方便地实现evaluate、grid search、cross validation。并且据某老司机表示:只要可以将计算表示成计算图的形式,就可以使用TensorFlow。这就意味着,Tensorflow打破了Deep Learning这个概念框架的限制,在更多的领域也有自己的应用,可以写内层循环代码控制计算图分支的计算。TensorFlow也可以将计算图中的各个节点分配到不同的设备执行,充分利用硬件资源。

最值得小白们关注的就是——帅!

Tensorflow的TensorBoard,将网络结构和训练过程进行可视化,经常为了等编译,然后去冲一杯咖啡,路上碰上老板还是同学什么的,侃大山侃完,回来——还没做好。然鹅这个时候早已忘记了自己做到哪一步了,就一脸懵逼的看着电脑,或者一脸懊悔的看着自己手贱戳了键盘的某个键。

TensorBoard是TensorFlow的一组Web应用,用来监控TensorFlow运行过程,或可视化Computation Graph。TensorBoard目前支持5种可视化:标量(scalars)、图片(images)、音频(audio)、直方图(histograms)和计算图(Computation Graph)。TensorBoard的Events Dashboard可以用来持续地监控运行时的关键指标,比如loss、学习速率(learning rate)或是验证集上的准确率(accuracy);Image Dashboard则可以展示训练过程中用户设定保存的图片,比如某个训练中间结果用Matplotlib等绘制(plot)出来的图片;Graph Explorer则可以完全展示一个TensorFlow的计算图,并且支持缩放拖曳和查看节点属性。

CNTK分析

CNTK是MSRA开源的深度学习框架。在语音识别领域的使用尤其广泛。CNTK设计是性能导向的,从各种成绩上来看是非常的卓越——对,比Tensorflow厉害!

CNTK这个框架也很尴尬的和Tensorflow一样,对Python的支持又是只支持Python3.5

但是CNTK有个非常非常非常尴尬的一个局面:

真的!真的!很复杂!

并且没有Keras这样的神级辅助助推。

安装方法也是:

pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0.beta12.0-cp35-cp35m-win_amd64.whl

感兴趣的、想研究CNTK的筒子们可以直接爬下来。

性能是真的比Tensorflow高,同时你能用CNTK弄好,也代表了你的实力,毕竟CNTK的的确确的比Tensorflow更复杂一点,但是还是可以接受的。

Reference

  1. MNIST数据
  2. Kears文档
  3. CNTK PythonAPI
  4. CNTK Python配置

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2017-03-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【Python环境】数据科学的完整学习路径(Python版)

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

2955
来自专栏MyBlog

建立一个线上购物的面向任务的对话系统

该文给出了针对用于线上购物的面向任务的对话系统的一个一般的解决方案, 目标是协助用户完成多样化的购买相关任务, 比如搜索商品和回答问题, 如同正常人之间的对话....

1152
来自专栏华章科技

为什么你的数据分析那么好,图表做得那么烂?

所有优秀的数据可视化依赖优异的设计,并非仅仅选择正确的图表模板那么简单。全在于以一种更加有助于理解和引导的方式去表达信息,尽可能减轻用户获取信息的成本。当然并非...

1242
来自专栏机器之心

仅需1/5成本:TPU是如何超越GPU,成为深度学习首选处理器的

张量处理单元(TPU)是一种定制化的 ASIC 芯片,它由谷歌从头设计,并专门用于机器学习工作负载。TPU 为谷歌的主要产品提供了计算支持,包括翻译、照片、搜索...

500
来自专栏机器人网

谷歌输入法背后的机器智能

很多人每天花费大量时间使用移动设备键盘:撰写电子邮件,发短信,参与社交媒体等。 然而,移动键盘仍然在处理速度方面处于劣势。 用户平均在移动设备上的打字速度比在物...

3587
来自专栏java一日一条

为什么这段代码输出的是”Hello World”

明明是在程序里使用了java.util.Ramdom()函数产生随机数,为什么每次打出的结果都是Hello world? 各位程序员,你们怎么看?请务必要独立思...

632
来自专栏深度学习自然语言处理

这么好的视频不看吗?深度学习和线代,微积分

大家盼望的中秋节和十一已经基本都要过去了,大家是不是都玩的挺开心呀?(哎,我可没0.0,基本没离开过实验室,别认为我在学习

2192
来自专栏CDA数据分析师

数据科学的完整学习路径—Python版

从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者已经是数据科学家的...

2675
来自专栏PPV课数据科学社区

【学习】数据科学的完整学习路径—Python版

译者:Allen 从Python菜鸟到Python Kaggler的旅程(译注:Kaggle是一个数据建模和数据分析竞赛平台) 假如你想成为一个数据科学家,或者...

2594
来自专栏钱塘大数据

数据挖掘:用可视化效果展现你的数据

对于数据挖掘,我们可以通过文中对数据可视化的案例找到分析数据、展现数据的方法和思路。 Data visualization 是一件很有趣的事情。最近在尝试处理数...

3325

扫码关注云+社区

领取腾讯云代金券