1. 机器学习和深度学习
- 机器学习代指传统的算法。
- 常用的深度学习库:tensorflow
- tensorflow的特点:
- 数据流图
tensor:张量
operation(op):专门运算的操作节点,所有操作都是一个节点
graph:图,整个程序的结构
会话:运算程序的图
- 计算密集型和IO密集型
1. 数据流图中的要素分析
1. 图
- 计算密集型和IO密集型
- 图默认已经注册,一组表示 tf.Operation计算单位的对象和tf.Tensor
表示操作之间流动的数据单元的对象 - 获取调用:
tf.get_default_graph()
op、sess或者tensor 的graph属性,对于在同一个图上面定义的张量的graph属性都是同一个地址值。 - 图的创建(如果不创建就默认)
- 图包含了op、张量和上下文环境
- op可以视为一个载体,tensor可以看做是一个被载的对象。
- 哪些是op
2. 会话
- 会话作用:
- 运行图的结构
- 分配资源计算
- 掌握资源(变量的生命周期等资源,队列、线程)
- 会话一次只能运行一个图。
- tf.Session()
运行TensorFlow操作图的类,使用默认注册的图(可以指定运行图,Session中协商相应参数) - 会话资源
会话可能拥有很多资源,如 tf.Variable,tf.QueueBase
和tf.ReaderBase,会话结束后需要进行资源释放- sess = tf.Session()
- sess.run(…) 作用是启动整个图
- sess.close() 作用是释放资源
- 以上三个操作比较繁琐,所以可以使用上下文管理器with:
- 会话的run方法
tf.placeholder是一个占位符 - Tensorflow Feed操作
意义:在程序执行的时候,不确定输入的是什么,提前“占个坑”
语法:placeholder提供占位符,run时候通过feed_dict指定参数
3. 张量
- 基础知识:
- 张量的阶:
- 张量的数据类型:
- 张量的属性:
张量.属性
- 张量的动态形状和静态形状
没有生成新的张量:静态形状
对于一个动态形状,可以利用set_shape改成静态形状,但是一旦改成静态形状,那就不能使用set_shape进行改动,需要使用tf.reshape进行改动维度。
- 张量操作:生成张量
固定值张量: