TensorFlow 学习积累(1):variable 和 placeholder

来源:互联网 发布:言论自由 知乎 编辑:程序博客网 时间:2024/06/07 11:12

variable和placeholder


variable :不丢失

variable 用于构建一个变量,在计算图的运算过程中,其值会一直保存到程序运行结束,而一般的tensor张量在tensorflow运行过程中只是在计算图中流过,并不会保存下来。

因此varibale主要用来保存tensorflow构建的一些结构中的参数,这些参数才不会随着运算的消失而消失,才能最终得到一个模型。

比如神经网络中的权重和bias等,在训练过后,总是希望这些参数能够保存下来,而不是直接就消失了,所以这个时候要用到Variable。

注意,所有和varible有关的操作在计算的时候都要使用session会话来控制,包括计算,打印等等。

import tensorflow as tf

a=tf.Variable(1)

b=tf.constant(1)  #定义变量a=0和常量1,并且定义a的自加运算aplus1和更新a的值得操作update"""

aplus1=tf.add(a,b)

update=tf.assign(a,aplus1)

#设置完变量之后,必须要对变量进行初始化工作,变量才能使用

init=tf.initialize_all_variables()

with tf.Session() as sess:

sess.run(init) #运行初始化变量的计算

for i in range(10): #循环10次,查看a逐渐自加1的结果

sess.run(update) #执行变量a的自加运算

print(sess.run(a)) #打印变量a也需要用session.run


placeholder :喂数据

tensorflow中又一保存数据的利器,placeholder(type,strucuct…),它的第一个参数是你要保存的数据的数据类型,大多数是tensorflow中的float32数据类型,后面的参数就是要保存数据的结构,比如要保存一个1×2的矩阵,则struct=[1 2]。

它在使用的时候和前面的variable不同的是在session运行阶段,需要给placeholder提供数据,利用feed_dict的字典结构给placeholdr变量“喂数据”。

input1 = tf.placeholder(tf.float32)

input2 = tf.placeholder(tf.float32)

# output = tf.multiply(input1,input2)#乘法

# output = tf.add(input1,input2)#加法

# output = tf.mod(input1,input2)#余数

# output = tf.sub(input1,input2)#减发

output = tf.div(input1,input2)#除法

print(sess.run(output,feed_dict={input1:[7.],input2:[2.]}))

阅读全文
1 0