[Tensorflow] TensorFlow之Hello World!(1)

ぃ、小莉子 提交于 2020-12-04 08:26:59

哇!今天挺开心的,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/



放松一下吧!



有问题可以加我的微信: 

 

Alvin_2580


交流学习进步!!!



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


欢迎感兴趣的朋友扫描下面的二维码,或者点上面的公众号的名字,关注!



本文分享自微信公众号 - 机器学习和数学(ML_And_Maths)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!