赞
踩
说明TensorFlow的数据流图结构
应用TensorFlow操作图
说明会话在TensorFlow程序中的作用
应用TensorFlow实现张量的创建、形状类型修改操作
应用Variable实现变量op的创建
应用Tensorboard实现图结构以及张量值的显示
应用tf.train.saver实现TensorFlow的模型保存以及加载
应用tf.app.flags实现命令行参数添加和使用
应用TensorFlow实现线性回归
目标
应用
内容预览
2.4.1 张量(Tensor)
2.4.2 创建张量的指令
2.4.3 张量的变换
2.4.4 张量的数学运算
在编写 TensorFlow 程序时,程序传递和运算的主要目标是tf.Tensor
TensorFlow 的张量就是一个 n 维数组, 类型为tf.Tensor。Tensor具有以下两个重要的属性
形状有0阶、1阶、2阶….
tensor1 = tf.constant(4.0)
tensor2 = tf.constant([1, 2, 3, 4])
linear_squares = tf.constant([[4], [9], [16], [25]], dtype=tf.int32)
print(tensor1.shape)
# 0维:() 1维:(10, ) 2维:(3, 4) 3维:(3, 4, 5)
其它特殊的创建张量的op
TensorFlow的张量具有两种形状变换,动态形状和静态形状
关于动态形状和静态形状必须符合以下规则
静态形状
动态形状
def tensor_demo(): """ 张量的介绍 :return: """ a = tf.constant(value=30.0, dtype=tf.float32, name="a") b = tf.constant([[1, 2], [3, 4]], dtype=tf.int32, name="b") a2 = tf.constant(value=30.0, dtype=tf.float32, name="a2") c = tf.placeholder(dtype=tf.float32, shape=[2, 3, 4], name="c") sum = tf.add(a, a2, name="my_add") print(a, a2, b, c) print(sum) # 获取张量属性 print("a的图属性:\n", a.graph) print("b的名字:\n", b.name) print("a2的形状:\n", a2.shape) print("c的数据类型:\n", c.dtype) print("sum的op:\n", sum.op) # 获取静态形状 print("b的静态形状:\n", b.get_shape()) # 定义占位符 a_p = tf.placeholder(dtype=tf.float32, shape=[None, None]) b_p = tf.placeholder(dtype=tf.float32, shape=[None, 10]) c_p = tf.placeholder(dtype=tf.float32, shape=[3, 2]) # 获取静态形状 print("a_p的静态形状为:\n", a_p.get_shape()) print("b_p的静态形状为:\n", b_p.get_shape()) print("c_p的静态形状为:\n", c_p.get_shape()) # 形状更新 # a_p.set_shape([2, 3]) # 静态形状已经固定部分就不能修改了 # b_p.set_shape([10, 3]) # c_p.set_shape([2, 3]) # 静态形状已经固定的部分包括它的阶数,如果阶数固定了,就不能跨阶更新形状 # 如果想要跨阶改变形状,就要用动态形状 # a_p.set_shape([1, 2, 3]) # 获取静态形状 print("a_p的静态形状为:\n", a_p.get_shape()) print("b_p的静态形状为:\n", b_p.get_shape()) print("c_p的静态形状为:\n", c_p.get_shape()) # 动态形状 # c_p_r = tf.reshape(c_p, [1, 2, 3]) c_p_r = tf.reshape(c_p, [2, 3]) # 动态形状,改变的时候,不能改变元素的总个数 # c_p_r2 = tf.reshape(c_p, [3, 1]) print("动态形状的结果:\n", c_p_r) # print("动态形状的结果2:\n", c_p_r2) return None
这些API使用,我们在使用的时候介绍,具体参考文档
目标
应用
内容预览
TensorFlow变量是表示程序处理的共享持久状态的最佳方法。变量通过 tf.Variable OP类进行操作。变量的特点:
tf.Variable(initial_value=None,trainable=True,collections=None,name=None)
变量需要显式初始化,才能运行值
def variable_demo(): """ 变量的演示 :return: """ # 定义变量 a = tf.Variable(initial_value=30) b = tf.Variable(initial_value=40) sum = tf.add(a, b) # 初始化变量 init = tf.global_variables_initializer() # 开启会话 with tf.Session() as sess: # 变量初始化 sess.run(init) print("sum:\n", sess.run(sum)) return None
会在OP的名字前面增加命名空间的指定名字
with tf.variable_scope("name"):
var = tf.Variable(name='var', initial_value=[4], dtype=tf.float32)
var_double = tf.Variable(name='var', initial_value=[4], dtype=tf.float32)
<tf.Variable 'name/var:0' shape=() dtype=float32_ref>
<tf.Variable 'name/var_1:0' shape=() dtype=float32_ref>
pe()修改变量的命名空间
会在OP的名字前面增加命名空间的指定名字
with tf.variable_scope("name"):
var = tf.Variable(name='var', initial_value=[4], dtype=tf.float32)
var_double = tf.Variable(name='var', initial_value=[4], dtype=tf.float32)
<tf.Variable 'name/var:0' shape=() dtype=float32_ref>
<tf.Variable 'name/var_1:0' shape=() dtype=float32_ref>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。