tensorflow入门学习,继续巩固,placeholder 和 variable op的使用(七)
发表于: 2018-06-26 23:06:10 | 已被阅读: 27 | 分类于: tensorflow
上一节,我们 一行一行写出了线性回归代码,这一节,先对 tensorflow 基础做了一些心得总结,然后继续巩固 tensorflow 的基础:placeholder
和variable
节点(op)的使用。它俩是 tensorflow 常用的节点,弄清楚点,会用的更加顺心应手。
再看第一节
第一节提到,tensorflow 的计算是以
import tensorflow as tf
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
session = tf.Session()
res = session.run(product)
print res
session.close()
以上面代码为例,product 连接了节点matrix1
和matrix2
。
采用 python 描述完 tensorflow 网络后,按照前面几节的介绍,tensorflow 为了效率,会将计算图完全放在 python 外部的高速计算环境计算,
现在再回头整理这些内容,好理解多了哈。下面再巩固下
tensorflow 的 placeholder
上面咱们说到,再运行 tensorflow 网络之前,需要先描述网络。有些时候,并不能确定什么时候需要什么数值。这时,
#encoding=utf8
import tensorflow as tf
import numpy as np
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.add(input1, input2)
sess = tf.Session()
print sess.run(output, feed_dict={input1:[2.], input2:[3.]})
sess.close()
首先,创建了两个 holder,都是 float32 型的,不考虑具体数值,先占着位。什么时候传入数值呢?肯定是需要的时候了。这里的例子,是在执行 tf.add 时,通过
$ python holder_variable.py
[5.]
tensorflow 的 variable
通过这几节的学习,知道通过
#encoding=utf8
import tensorflow as tf
import numpy as np
state = tf.Variable(0, name='counter') # 取名为 counter
one = tf.constant(1) # 常量
new = tf.add(state, one) # 将常量加到 state
update = tf.assign(state, new) # 赋值
init = tf.global_variables_initializer() # 必须有的,tensorflow 规定的
sess = tf.Session()
sess.run(init)
for _ in range(3): # 执行 3 次累加
sess.run(update)
print sess.run(state)
sess.close()
以上代码,建立了一个累加器,每次加 1。第 8 行,通过默认图
$ python holder_variable.py
1
2
3