计算密集型(cpu计算) -tensorflow IO密集型(web,磁盘) -django -scrapy
1、基本概念
tensor 张量-数据结构
op 专门运算的操作节点
graph 图:整个程序的结构
session 会话:运算程序的图
图默认已经注册:
一组表示tf.Operation计算单位的对象
和 tf.Tensor表示操作之间流动的数据单位的对象
获取图
graph = tf.get_defaul_graph()
默认图,相当于给程序分配内存
创建图
g = tf.Graph() with g.as_default(): pass
op: 只要使用tensorflow的API定义函数都是OP
tensor: 指代的就是数据
tensorflow
-前端系统:定义程序的图的机构
-后端系统:运算图结构
会话:
-运行图的机构
-分配资源计算
-掌握资源(变量的资源,队列,线程)
使用 1
session = tf.Session() session.run() session.close()
使用 2 上下文管理器
with tf.Session() as session: session.run()
Session参数:
1、可以指定图 graph参数
2、显示运行设备
config = tf.ConfigProto(log_device_placement=True)
命令行交互
>> import tensorflow as tf >> tf.InteractiveSession()
只要有会话开启,就可以使用
varible.eval()
session.run()
varible.eval() session.run()
参数:
fetches 变量,列表,元组
namedtuple,dict,OrderDict
重载的运算符,默认会给运算符重载为op了O型
注意:不是op不能运算
feed_dict 训练数据,实时提供数据去进行训练
placeholder 占位符
# None为不固定长度 plt = tf.placeholder(tf.float32, shape=[None, 3]) data = [[1, 2, 3], [4, 5, 6]] with tf.Session() as session: session.run(plt, fead_dict={plt: data})
张量
numpy as np 数组 ndarray 矩阵 张量 tensor = ndarray 0维 2维 1维 2维
2、基本数据格式
一个类型化的N维度数组(tf.Tensor)
Tensor(名称, 维度形状, 数据类型)
常用数据类型
tf.float32
tf.int32
张量的属性
graph图
op操作名
name 字符串描述
shaple 形状
0维()
1维(4)
2维(3, 4)
3维(3, 4, 2)
Numpy reshape 直接修改形状
动态形状和静态形状
在于有没有生成一个新的张量数据
静态形状
tf.Tensor.get_shape()
tf.Tensor.set_shape()
静态形状,一旦张量形状固定了,不能再次设置,不能跨维度修改
1D-> 1D 2D->2D
动态形状
tf.reshape()
动态形状可以去创建一个新的张量, 元素数量要匹配
1D -> 2D 1D->3D
# 静态形状 plt = tf.placeholder(tf.float32, (None, 2)) plt.set_shape((3, 2)) # 动态形状 plt_reshape = tf.reshape(plt, (2, 3))
3、张量操作
3.1 创建张量
# 所有元素为0的张量 tf.zeros(shape, dtype=tf.float32, name=None) tf.zeros_like(tensor, dtype=None, name=None) tf.ones(shape, dtype=tf.float32, name=None) tf.ones_like(tensor, dtype=None, name=None) tf.fill(dims, value, name=None) # 创建一个常数张量 tf.constant(value, dtype=None, shape=None, name="Const") # 正态分布(高斯分布)随机张量 tf.truncated_normal(shape, mean=0.0,stddev=1.0, dtype=tf.float32, seed=None, name=None) # 从正态分布中取随机数 tf.random_normal(shape, mean=0,0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
方差:数据的离散程度
平均值,标准差
张量变换
3.2 改变类型
tf.string_to_number(string_tensor, out_type=None, name=None) tf.cast(x, dtype, name=None)
3.3 形状变换
tf.shape(input, name=None) tf.reshape(tensor, shape, name=None) # 切片扩展 tf.concat(values, axis, name="concat")
代码示例
import tensorflow as tf tf.InteractiveSession() a = [[1, 2, 3], [4, 5, 6]] b = [[7, 8, 9], [10, 11, 12]] c = tf.concat([a, b], axis=0) c.eval() Out[8]: array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]], dtype=int32) d = tf.concat([a, b], axis=1) d.eval() Out[10]: array([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 10, 11, 12]], dtype=int32)
4、Tensor提供的API
算术运算
基本数据函数
矩阵运算
减少维度的运算(求平均值)
序列运算