[Tensorflow] TensorFlow之Hello World!(1)

哇!今天挺开心的,30天的时间,19篇文章,2459人阅读,5313人次阅读!今天开通的原创标识,恩!除了激动,就是非常感谢大家的支持!感谢大家的支持!大家的支持!的支持!支持!持!我会继续努力的!我们一起进步!(./鞠躬!)

******************分割线******************

在学习TensorFlow之前,先给大家安利一波其他的几个库,主要有caffe,CNTK,keras,Theano,Torch,MaxNet。

总的来说,Caffe,CNTK这类是基于配置文件来定义模型,而Torch,Theano,Keras,TensorFlow是基于语言来定义模型。其中Torch是基于lua,一个比较小众的语言,不过也有了Python版。基于Python的有Theano,TensorFlow,Keras。Theano是和TensorFlow最像的一个,应该说TensorFlow是受到了Theano的启发而开发的,他们都是利用了tensor张量的思想。但是Theano是由LISA lab基于学术目的而开发的一套底层算法库,而TensorFlow是由google支持的。他俩主要区别还在于TensorFlow支持分布式编程。

下面有些网址可能打不开,这不是说链接无效~,而是需要“翻墙”,我觉得肯定有人不知道怎么办,就像我刚听说的时候!一般来说翻墙就2种方法,1:免费。2:收费。

我用过免费的有赛风。收费的是Green。类似的收费的还有蓝灯等,但是我没用过,貌似有免费的办法,但是就是有限制!然后接下来你就懂了撒!

1. 开源库资源汇总

1). caffe

项目主页:http://caffe.berkeleyvision.org/

Github:https://github.com/BVLC/caffe

安装教程:https://github.com/BVLC/caffe/wiki/Caffe-installing-

script-for-ubuntu-16.04---support-Cuda-8

英文版教程:

(1). http://caffe.berkeleyvision.org/tutorial/

(2).http://adilmoujahid.com/posts/2016/06/introduction-deep-learning-python-caffe/

(3).http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html

中文版教程:

(1). https://yufeigan.github.io/

(2). http://blog.csdn.net/fengbingchun/article/details/49535873

2). Keras

主页:https://keras.io/

中文文档:http://keras-cn.readthedocs.io/en/latest/

Github:https://github.com/fchollet/keras

安装:http://keras-cn.readthedocs.io/en/latest/for_beginners

/keras_linux/

英文教程:

(1).http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/

(2). https://elitedatascience.com/keras-tutorial-deep-learning-in-python

中文教程同中文文档

3).Theano

主页:http://deeplearning.net/software/theano/

Github: https://github.com/Theano/Theano

安装:http://deeplearning.net/software/theano/install_

ubuntu.html

英文教程:

(1).http://www.wildml.com/2015/09/speeding-up-your-neural-network-with-theano-and-the-gpu/

(2).https://bigaidream.gitbooks.io/subsets_ml_cookbook/content/dl/theano/theano_tutorial.html

(3). http://www.marekrei.com/blog/theano-tutorial/

中文教程:

(1). http://blog.csdn.net/ycheng_sjtu

(2). http://blog.csdn.net/hjimce

4). Torch

主页:http://torch.ch/

Github:https://github.com/torch/torch7

Python版Github:https://github.com/pytorch/pytorch

安装:http://torch.ch/docs/getting-started.html

英文教程:

(1). http://supercomputingblog.com/machinelearning/an-intro-to-convolutional-networks-in-torch/

(2). https://iamtrask.github.io/2017/01/15/pytorch-tutorial/

5).MaxNet

主页:http://mxnet.io

Github:https://github.com/dmlc/mxnet

安装:http://mxnet.io/get_started/install.html

英文教程:

(1). http://mxnet.io/tutorials/r/fiveMinutesNeuralNetwork.html

(2).https://medium.com/becoming-human/an-introduction-to-the-mxnet-api-part-1-848febdcf8ab

中文教程:

(2).https://ljalphabeta.gitbooks.io/mxnet-notes/content/mxnet_python_overview_tutorial.html

6). CNTK

主页:https://www.microsoft.com/en-us/cognitive-toolkit/

Github:https://github.com/Microsoft/CNTK

安装: https://github.com/Microsoft/CNTK/wiki/Setup-CNTK-on-your-machine

英文教程:https://docs.microsoft.com/en-us/cognitive-toolkit/tutorial/tutorial

好,简单总结到这里,有需要的时候随时来看看,下面开始TensorFlow入门。

2. TensorFlow

关于TensorFlow的说明性介绍,我就不多说了,大家也都知道。就目前来说,几个比较流行的深度学习框架,TensorFlow在Github上的星星是最多的,说明了它的流行程度。但是框架这种东西,我觉得不要太依赖,其实用哪个并不是那么特别重要,做深度学习,重要的我觉得还是经验和idea,还有理论背景。

TensorFlow的安装现在已经很简单了,直接pip就可以,也不用安装底层的numpy,scipy这些依赖库,pip都会帮我们一步到位!

sudo pip install tensorflow-gpu

开始之前,需要对张量的概念有所了解,不要被名字所吓倒。张量可以简单理解为n维数组,但是在深度学习中,我们一般处理的图像都是RGB格式的,也就是三个维度,即n=3.然后加上batch size一个维度,变成n=4。然后最多你会做三维卷积,这时候n=5。

1, 2, 3, 4, 5,上山打老虎。。。哈哈。换个角度思考一下,不要去想一个5维数组是什么样的,你只要盯紧5个维度就好。什么意思呢,就是做运算的时候,只要清楚每一步是那个维度在变化,然后是第几个维度和第几个维度在做运算就好了。这样想是不是很简单。

这里引用一句TensorFlow中文社区的一句介绍的话,“TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。”

关键的几个点,图,操作,张量。

一句话概括就是

由操作连接起许多张量而构成的一张大图。

其中节点,也叫operation,ops。这就是TensorFlow的设计哲学。

然后打开我们的python,导入TensorFlow模块。

>>> import tensorflow as tf

Graph表示当我们导入tf以后,tf就帮我们默认建了一个计算图。可以看到graph是Graph的对象。

>>> graph = tf.get_default_graph()

然后我们查看一下,这个计算图定义那些op,发现op是空的,这是因为我们还没有定义张量和操作等。

>>> graph.get_operations()

[]

然后定义一个常数,1。tf.constant(),就表示常量的意思。

>>> input_value = tf.constant(1.0)

然后在查看一下计算图中,有哪些op。发现有了一个Const的op。类型是Const,常量。

>>> operations =graph.get_operations()

[<tf.Operation 'Const' type=Const>]

然后看一下这个常量op中,都有那些节点。输出的一大堆东西,包括节点的名字,属性,数据类型等。

>>> operations[0].node_def

看一下input_value,Const:0,这里的0表示这是定义的第0个常量,如果你在定义一个常量,它的值就变为1了。

>>> input_value

<tf.Tensor 'Const:0' shape=()dtype=float32>

然后定义一个Session,先看一下文档中对Session的解释:

“A Session object encapsulates theenvironment in which Tensor objects are evaluated”

一个Session对象包括了环境中包含的所要计算的张量对象。我们刚才定义了一个计算图,并定义了一个op,然后我们要看一下op的值是多少,这就需要启动计算图。Session的作用就是启动计算图。能不能不启动直接输出值?不能!why?I don’t know !

>>> sess = tf.Session()

Sess.run()就是来运行Input_value,简单说就是把刚才定义得值输出一下。

>>> sess.run(input_value)

刚才我们干了什么?仅仅是定义了一个阿拉伯数字1,然后让tf帮我们输出一下值。接下来,我们稍微玩的高级一丁点。定义一个变量,然后和刚才的输入1,做加法。就是1+0.8,我们期望让tf输出1.8。

>>> weight = tf.Variable(0.8)

>>> for op ingraph.get_operations(): print(op.name)

这里的输出可以自己去试试,很长的一大堆,可以和之前做个对比,看看有什么不一样。

>>> output_value = weight +input_value

<tf.Tensor 'add_1:0' shape=()dtype=float32>

>>> op =graph.get_operations()[-1]

>>> op.name

'add'

>>> for op_input in op.inputs:print(op_input)

>>> init = tf.global_variables_initializer()

>>> sess.run(init)

>>> sess.run(output_value)

果然输出了1.8。哇,好厉害!做了半天就算了1+0.8!哈哈哈。

今天的内容就到这里,希望大家玩的开心!tf的入门教程,还会有一篇文章来介绍,包括变量,占位符,Fetch,Feed等。后面还会有一个完整的神经网络的栗子,希望大家关注哦!

[参考文献]

1. https://www.oreilly.com/learning/hello-tensorflow

2.https://cs224d.stanford.edu/lectures/CS224d-Lecture7.pdf

3.Nick McClure,TensorFlow Machine Learning Cookbook

4.http://www.tensorfly.cn/

放松一下吧!

本文为作者原创,如有雷同,必然是别人抄我的。

原文发布于微信公众号 - 机器学习和数学(ML_And_Maths)

原文发表时间:2017-05-16

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏js编程在工科课程中的简单应用

3.1 Contour绘制

首先一起学习利用百度的开源项目绘制contour,百度搜索“echarts heatmap”,找到热力图的一个案例(http://echarts.baidu.c...

1260
来自专栏大数据挖掘DT机器学习

R语言数据处理:飞机航行距离与到达延误时间有什么关系??

数据分析有一半以上的时间会花在对原始数据的整理及变换上,包括选取特定的分析变量、汇总并筛选满足条件的数据、排序、加工处理原始变量并生成新的变量、以及分组汇总数...

3744
来自专栏Crossin的编程教室

【每周一坑】蜥蜴流感与贝叶斯定理

春季是流感的高发季节。不要觉得只是小小的“感冒”,严重起来甚至也会危及生命,而且还没有特效药。因此,身体不适请及时到医院检查。

1603
来自专栏编程心路

人人都可以用C语言写推箱子小游戏

C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了。这个是我学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提...

1K4
来自专栏机器之心

教程 | 如何通过PyTorch上手Tensor Comprehensions?

选自pytorch 作者:Priya Goyal等 机器之心编译 参与:乾树、黄小天 Tensor Comprehensions 是一个降低高性能代码编写门槛的...

3137
来自专栏BestSDK

Pytorch 0.3.0 发布:新增张量函数,支持模型移植

根据官方文档的介绍,此次增加了多个函数和功能,多方面的性能均实现提升。 重大变更 0.3 版本中删掉了 Variable.reinforce() 等随机函数,因...

3708
来自专栏小红豆的数据分析

acmer之路(3)四月第一周日志

这一周加入了院足球队,好久都没有感受到在赛场上奔腾的感觉了。不过正好赶上清明,因此也算有充足的时间来码代码。这个月一共码了20题,排名终于冲进了四万名。

1271
来自专栏决胜机器学习

机器学习(十四) ——朴素贝叶斯实践

机器学习(十四)——朴素贝叶斯实践 (原创内容,转载请注明来源,谢谢) 一、垃圾邮件分类 垃圾邮件分类,即通过读取邮件的内容,并打上标记其是垃圾邮件或者是正常...

3627
来自专栏深度学习之tensorflow实战篇

数据挖掘PageRank算法(网页排名原理)及Map-Reduce实现

方法/步骤 1 一、什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google...

4719
来自专栏媒矿工厂

基于MCMC的X265编码参数优化方法

新一代视频编码标准,包括高效视频编码HEVC和音频视频编码标准AVS2近年来已被提出以进一步提高H.264/AVC编码标准的压缩性能。在相同的主观视觉的前提下,...

3143

扫码关注云+社区

领取腾讯云代金券