tensorflow 入门

一.tensorflow的运行流程

tensorflow的运行流程主要有2步,分别是构造模型和训练。
在构造模型阶段,我们需要构建一个图(Graph)来描述我们的模型。所谓图,也可以理解为流程图,就是将数据的输入->中间处理->输出的过程表示出来,就像下面这样。

《tensorflow 入门》
注意此时是不会发生实际运算的。而在模型构建完毕以后,会进入训练步骤。此时才会有实际的数据输入,梯度计算等操作。那么,如何构建抽象的模型呢?
这里就要提到tensorflow中的几个概念:Tensor,Variable,placeholder,而在训练阶段,则需要介绍Session。下面先解释一些上面的几个概念

1 Tensor

Tensor的意思是张量,不过按我的理解,其实就是指矩阵。也可以理解为tensorflow中矩阵的表示形式。Tensor的生成方式有很多种,最简单的就如

不过要注意,因为在训练开始前,所有的数据都是抽象的概念,也就是说,此时a只是表示这应该是个1*5的零矩阵,而没有实际赋值,也没有分配空间,所以如果此时print,就会出现如下情况:

只有在训练过程开始后,才能获得a的实际值

这边设计到Session概念,后面会提到

2 session

session,也就是会话。我的理解是,session是抽象模型的实现者。为什么之前的代码多处要用到session?因为模型是抽象的嘛,只有实现了模型以后,才能够得到具体的值。同样,具体的参数训练,预测,甚至变量的实际值查询,都要用到session,看后面就知道了.

tensorflow中的所有定义和函数都需要通过session.run之后才能真正运行

3 Variable

故名思议,是变量的意思。一般用来表示图中的各计算参数,包括矩阵,向量等。例如,我要表示上图中的模型,那表达式就是

(relu是一种激活函数,具体可见这里)这里W和b是我要用来训练的参数,那么此时这两个值就可以用Variable来表示。Variable的初始函数有很多其他选项,这里先不提,只输入一个Tensor也是可以的

定义变量需要

  • tf.Variable声明,
  • 并且变量需要global_variables_initializer最终完成定义,
  • 而最终变量生成需要借助session,run过之后才是真正的变量

global_variables_initializer什么时候需要用?

4 placehoder

又叫占位符,同样是一个抽象的概念。用于表示输入输出数据的格式。告诉系统:这里有一个值/向量/矩阵,现在我没法给你具体数值,不过我正式运行的时候会补上的!例如上式中的x和y。因为没有具体数值,所以只要指定尺寸即可

在执行时候才赋值

5 My First Demo

先运行下我们的第一个demo:

6 定义神经层

《tensorflow 入门》

7 matplotlib可视化

plt.ion() 用于连续显示。因为plt.show()之后就会暂停。

8 tensorboard的使用

demo 代码:

这里相对于第一篇tensorflow多了一点东西,tf.name_scope函数是作用域名,上述代码斯即在graph作用域op下,又有三个op(分别是matrix1,matrix2,product),用tf函数内部的name参数命名,这样会在tensorboard中显示,具体图像还请看下面。

运行上面的代码,查询当前目录,就可以找到一个新生成的文件,已命名为logs,我们需在终端上运行tensorboard,生成本地链接,具体看我截图,运行tensorboards --logdir logs指令,就可以生成一个链接,复制那个链接,在google浏览器(我试过火狐也行)粘贴显示
(ps:如果使用pycharm的话,先运行项目,然后直接使用里面的terminal运行tensorboards --logdir logs,复制链接就能在浏览器里面打开了)

具体运行过程如下(中间的警告请忽略,我把上面的代码命名为1.py运行的)
《tensorflow 入门》
可以看到最后一行出现了链接,复制那个链接,推荐用google浏览器打开(火狐我试过也行),也可以直接打开链接

想使用该功能,总要的一句命令就是在想添加显示的地方插入:
with tf.name_scope('scope名字')然后在任何想显示名称的函数后面通过添加name='名称'添加

代码:

效果图
《tensorflow 入门》

运行方式同样如上,即程序运行完毕之后, 会产生logs目录 , 使用命令 tensorboard –logdir logs

9 tensorboard 监察程序运行状况

这里要注意的是,目前的tensorflow好像需要histogram、scalar同时存在才能运行,以后在测试!!!
完整代码:

运行效果图:
《tensorflow 入门》
《tensorflow 入门》
《tensorflow 入门》

10 dropout

dropout的具体作用详见如下:

完整代码:

11 卷积神经网络

二、tensorflow代码框架总结

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注