tensorflow图的结构
Tensor + flow 张量 流动 计算密集型 tensorflow cpu计算 IO密集型 web,scrapy 请求比较频繁
图:算法的结构(建房屋的结构图)
就是定义的每一个节点,图节点
图默认已经注册,一组表示tf.Operation计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象
绘画也是个实例,也是类。 它相当于主管。 前端系统 ,tensorflow,定义程序的图的结构 后端系统,我们的们操作系统,运行图的结构 注:这里的变量是特定指的tensorflow的变量。 绘画的run方法, run(fetches,feed_dict=None,graph-None) 运行ops和计算tensor 嵌套列表,元组 namedtuple,dict,OrdereaDict(重载的运算符也能运行)
# import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL']='2' # 关闭警告 import tensorflow.compat.v1 as tf tf.disable_v2_behavior() # 创建一张图,包含了op和tensor,上下文环境(with) # op:只要使用tensorflow的API定义的函数都是op,以下,tf.XXX都是op g = tf.Graph() print(g) with g.as_default(): c = tf.constant(11.0) print(c.graph) # 实现一个加法算法 tf.compat.v1.disable_eager_execution() # 为了避免出现Session错误 a = tf.constant(5.0) # 张量 b = tf.constant(6.0) sum1 = tf.add(a,b) graph = tf.compat.v1.get_default_graph() print(graph) # 打印图 # 不是op不能运行,属于int var1 = 2 var2 = 3 sum2 = var1 + var2 # 这时候就可以用重载的机制,默认会给运算符重载为op sum2 = a + var1 # a是op print('='*30) print(sum2) # 开起一个会话 # s = tf.Session() # s.run() # s.run() # s.close() # 训练模型 # 书实时的提供数据去训练 # placeholder是一个占位符,feed_dict是个字典 plt = tf.placeholder(tf.float32,[2,3]) #占位2行3列,也可以用None去替换行列,使得不固定。 # 只能运行一个图结构,可以在回话当中制定图去运行,用graph=图名,去运行 # 查看程序在哪里去运行的 # config=tf.ConfigProto(log_device_placement=True) with tf.compat.v1.Session(config = tf.compat.v1.ConfigProto(log_device_placement=True)) as sess: print('='*30) print(sess.run(plt,feed_dict={plt:[[1,2,3],[4,5,6]]})) print(sess.run([sum1,a,b,sum2])) print(sum1.eval()) # 同上一个语句,只要有上下文环境,就可以使用eval print(a.graph) print(sum1.graph) print(sess.graph) # 返回内存地址数组,numpy:ndarrya,用np.dot()实现矩阵运算 张量本身也是数组,本身依赖numpy,只是类型不一样。
tensorflow的基本数据格式,一个类型化N维数组(tf.tensor),分为名字、形状、数据类型
张量的阶
张量的数据类型 静态与动态的形状改变
创建随机张量
张量的变换
print('--'*30) zero = tf.cast([[1,2,3],[4,5,6]],tf.float32) print(zero) with tf.Session() as sess: print(sess.run(zero))切边与扩展
print('--'*30) a = [[1,2,3],[4,5,6]] b = [[7,8,9],[10,11,12]] c = tf.concat([a,b],axis = 0) # 按行合并 print(c) with tf.Session() as sess: print(sess.run(c))拓展运算知识网站 https://blog.csdn.net/wyl1987527/article/details/62458057/
1、变量的创建 变量也是一种op,是一种特殊的张量,能够进行储存持久化,把它的值就是张量,默认被训练
# 1.变量op能够持久化保存,普通的张量op不可以 # 2.当定义一个变量op,一定要在绘画中去初始化 a = tf.constant([1,2,3,4,5]) var = tf.Variable(tf.random_normal([2,3],mean=0.0,stddev=1.0)) print(a,'\n',var) # 必须做一步显示的初始化 init_op = tf.global_variables_initializer() with tf.Session() as sess: # 必须运行初始化op sess.run(init_op) print(sess.run([a,var]))https://blog.csdn.net/liulina603/article/details/79812984
2、变量的初始化 3、变量的作用域
梯度爆炸、消失