TensorFlow(变量,操作)

Tensorflow 变量(Variable)的主要作用是维护特定节点的状态 tf.Variable方法是操作,返回值是变量(特殊的张量) 变量与张量不同之处: 张量的生命周期通常是伴随着计算的完成而结束,内存也随着释放 变量则是常驻内存,每一步训练时不断更新其值,以实现模型的更新(自我感觉跟栈和堆有点像)

#创建变量
#返回一个形状为(1,4)的张量,四个元素的均值为100,标准差为0.35的正态分布
w = tf.Variable(initial_value = tf.random_normal(shape=(1,4),mean=100,stddev=0.35),name="W")
b = tf.Variable(tf.zeros([4]),name="b")

#初始化变量
#创建会话
sess = tf.Session()
#使用 tf.global_variables_initializer 方法初始化全局变量w和b
sess.run(tf.global_variables_initializer())
#执行操作,获取变量值
sess.run([w,b])

[array([[ 99.80061, 100.13786,  99.69376, 100.35596]], dtype=float32),
 array([0., 0., 0., 0.], dtype=float32)]
#更新变量
sess.run(tf.assign(b,[1,1,1,1]))

array([1., 1., 1., 1.], dtype=float32)

sess.run(tf.assign_add(b,[9,9,9,9]))

array([10., 10., 10., 10.], dtype=float32)

sess.run(tf.assign_sub(b,[2,2,2,2]))

array([8., 8., 8., 8.], dtype=float32)

Saver

Saver 使用实例
v1 = tf.Variable(...,name='v1')
v2 = tf.Variable(...,name='v2')
#指定需要保存和恢复的变量
有三种方法
saver = tf.train.Saver({'v1': v1,'v2': v2})   以字典的形式保存
saver = tf.train.Saver({v1,v2})   以变量的name保存
saver = tf.train.Saver({v.op.name: v for in [v1,v2]})
#创建saver
saver = tf.train.Saver({'w':w,'b':b})
#存储变量到文件
saver.save(sess,'./test.ckpt',global_step=0)

'./test.ckpt-0'

#更新
sess.run(tf.assign_add(b,[1,1,1,1]))
array([9., 9., 9., 9.], dtype=float32)

#恢复
saver.restore(sess,'./test.ckpt-0')
sess.run(b)

INFO:tensorflow:Restoring parameters from ./test.ckpt-0
Out[29]:
array([8., 8., 8., 8.], dtype=float32)

Tensorflow 用数据流图表示算法模型,数据流图由节点和有向边组成, 每个节点均对应着具体操作,因此操作是模型功能的实际载体。

数据流图中的节点按照功能分成不同的三种:

存储节点:有状态的变量操作,用来存储模型参数

计算节点:伍状态的计算或者控制操作,主要负责算法逻辑表达或者流程控制

数据节点:数据的占位符 操作,用于描述图外输入数据的属性

Tensorflow使用占位符操作表示图外的数据,,如训练和测试数据。 Tensorflow数据流图描述了算法模型的计算拓扑,其中的各个操作节点都是抽象的函数映射或者数学表达式。 换句话谁,数据流图本身是一个具有计算拓扑和内部结构的壳,在用户向数据流图填充数据之前,图中并没有真正执行的操作。

#x和y两个占位符
x = tf.placeholder(tf.int16,shape=(),name='x')
y = tf.placeholder(tf.int16,shape=(),name='y')
#定义两个操作
add = tf.add(x,y)
mul = tf.multiply(x,y)
with tf.Session() as sess:
    print(sess.run(add,feed_dict={x:2,y:3}))
    print(sess.run(mul,feed_dict={x:2,y:3}))
5
6

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值