Tersorflow小整理

Tersorflow整理,目录如下

一、基础知识

二、API梳理

三、进阶使用

四、面试问答

 

感谢引文:简单粗暴入门tensorflow    tensorflowAPI接口文档


一、基础知识

tensorflow可以帮我们:模型建立与调试、训练、部署、调用

 

【设计理念】计算在图中,图在会话中

图(Graph):表示计算任务,图的定义和运算隔离
会话(Session):图的运算必须放在会话当中

tensorflow = 由tensor(张量)+ flow(流动)组成

 

【编程模式】三大核心对象,二大变量作用域

图(Graph)由节点和边组成,边=张量(tensor),节点=算子=操作(flow中的操作OP)
边(Tensor)分为数据依赖(实线)和控制依赖(虚线)
操作(Operation),代表图中的一个节点,用于计算张量数据

variable_scope、name_scope,相同作用域可以共享变量


二、API梳理

tensorflow之API,可以大致分为三块:模块Modules、类Class、方法(函数)Functions

类:通过tf.[ClassName]()调用,大写开头
函数:直接通过tf.[FunctionName]()调用,小写开头
模块:可以理解为方法的集合,通过tf.[ModuleName].[FunctionName]()调用,小写开头

一、基础操作

声明常量:tf.constant()、tf.ones()、tf.zeros()

生成随机值:tf.random_normal()、tf.random_uniform()

声明变量:tf.Variable()、tf.get_variable()

占位符:tf.placeholder()与feed_dict搭配使用

常用语句:

init = tf.global_variables_initializer() # 初始化所有变量

tf.matmul()  #全连接层

with tf.Session() as sess:

      result = sess.run([product])

print result

 

二、神经元函数

tf.nn:激活、卷积、池化函数
tf.train:优化方法Optimizer

三、保存与加载

1.针对模型(.ckpt 实则保存的是会话中所有的变量)
saver = tf.train.Saver()
saver.save(sess)
saver.restore(sess)

2.针对图(.pb 二进制形式)
tf.train.write_graph()

3.针对变量

checkpoint = tf.train.Checkpoint(model=model)

checkpoint.save(save_path_with_prefix)  #保存文件的目录+前缀

model_to_be_restored = MyModel()

checkpoint = tf.train.Checkpoint(model=model_to_be_restored )

checkpoint.restore()

四、可视化

收集变量:
tf.summary.scalar()   #

tf.summary.histogram()

tf.summary.merge_all

保存变量:

filewriter = tf.summary.FileWriter()

filewriter.add_summary()

 

五、读取数据

代码如下:(拿图片举例)

 


三、进阶使用

tensorflow源码核心结构

1.contrib 目录中保存的是将常用的功能封装成的高级 API。包含常用包:framework、layers、learn、rnn、seq2seq、slim

2.core 这是tensorflow的原始实现,由C语言写的

3.examples 目录中给出了深度学习的一些例子。

4.g3doc  TensorFlow 的文档是用 Markdown 在维护的,并存放在 g3doc 中。g3doc 目录可以认为是TensorFlow 的离线手册,非常好用。

5.另外还有pythontensorboard

 

调试、部署  todo..


四、面试问答

 

手写tensorflow实现线性回归

答:https://github.com/aymericdamien/TensorFlow-Examples   熟记下来,尝试手写

 

问:变量命名空间对变量的影响?(2种命名空间 vs 2种变量申明)

答:

[1]. name_scope 对 get_variable新建变量的name属性无影响;对variable新建变量的name属性增加了“范围”标识。

[2]. variable_scope对get_variable新建变量的name属性和variable新建变量的name属性都增加了“范围”标识。

[3]. get_variable新建变量如果遇见重复的name则会因为重复而报错。

[4]. variable新建的变量如果遇见重复的name则会自动修改前缀,以避免重复出现。

 

 

0

发表评论

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

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

Tersorflow小整理
嘿!有什么能帮到您的吗?
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close