让你秒学Tensorflow(1)

《让你秒学Tensorflow(1)》 o_tensorflow_logo-alt@2x.png

Tensorflow是一款谷歌开源的人工智能(AI)框架,用于处理当下最热门的机器学习(深度学习)的一门语言。通过Tensorflow可以更好的理解机器学习及减少机器学习的复杂性。Tensorflow涉及到的激活函数,卷积函数… 将在之后的文章中为大家慢慢讲解。

如果大家想下手来玩一把的话也可以安装tensorflow。如果大家跟我一样用的是Mac只需执行一行代码就搞定。如果是其他操作系统请自行百度或Tensorflow官方网站。
*注:mac安装时需要pip 及 six 库。可自行下载安装

$ pip install https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl

我们开始来讲解Tensorflow了,官方网上是这样解释 Tensorflow的

使用 TensorFlow, 你必须明白 TensorFlow:
使用图 (graph) 来表示计算任务.
在被称之为 会话 (Session) 的上下文 (context) 中执行图.
使用 tensor 表示数据.
通过 变量 (Variable) 维护状态.
使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据.

官方解释的意思总结起来就是:

 graph <=  Session <= operation <= tensor

让tensor(张量)及一系列operation(操作) 通过Session(会话)这个载体来运行生成graph(图)。刚开始我也是懵懂,内心有无数只草泥马在崩腾,究竟是什么意思呢? 但是用多了逐渐慢慢知道是什么意思。弄到最后则与一些编程思想有异曲同工之妙,(如iOS开发中的调用相机,发起网络请求….)我们可以认为会话是一个打包交给cpu去处理的流程。

import tensorflow as tf
sess = tf.Session()

hello = tf.constant("hello,tensorflow");
print sess.run(hello)

a = tf.constant(10)
b = tf.constant(20)
c =  a + b 
print sess.run(c)
sess.close()

这是Tensorflow刚开始接触的两个例子,十分简单。学习Tensorflow最好需要先了解一下python语言,但是没关系只要你有写过编程的话,这几行代码简直so easy!

刚开始接触确实有点不习惯,因为我们都习惯命令式编程。在tensorflow中采用的是符号式编程

符号式计算一般先定义各种变量,然后建立一个数据流图,在数据流图中规定各个变量之间的关系,最后需要对数据流图进行编译,此时数据流图还是一个空壳子,里面没有任何实际数据,只有把需要运算的输入放进去,才能在整个模型中形成数据流,从而形成输出值

当我运行print (hello)时,打印的不是“hello,tensorflow”,而是一个<Tenser对象>。需要通过Session执行print sess.run(hello)时才能打印我预期的结果。网上搜索一番后才得知,变量,常量及操作 都需要在Session中的run中运行才会生效。

例子中 a与b 代表的是常量。c代表的是operation(操作),通过Session执行,得到Graph
这就是对应上tensorflow官方网上说明的结构

补充: 当项目中用到变量 tf.Variable() 时,应该先执行 init_op = tf.initialize_all_variables() 这方法是为了初始化所有的变量,如果没有初始化变量去执行变量,shell 出错

    原文作者:处在水深火热的iOS_林龙
    原文地址: https://www.jianshu.com/p/6ff91fdbbeba
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞