作者: Sam(甄峰) sam_code@hotmail.com
Tensorflow中,对于暂时不能赋值的元素,可以使用占位符。顾名思义,就是先占住位置,等需要时再赋值。它利用tf.placeholder()占住位置。
利用feed赋值。
赋值方式是:feed_dict={v:xxxx}
feed_dict参数的作用:
1. 是替换Graph中的某个Tensor的值。
例1:
import tensorflow as tf v1 = tf.Variable(tf.ones([2,3], dtype=tf.int32)) r1 = tf.placeholder(dtype=tf.int32, shape=[3,2]) v2 = tf.Variable(2., dtype=tf.float32) v3 = tf.Variable(3., dtype=tf.float32) c1 = tf.constant(5., dtype=tf.float32) mul = tf.multiply(v2, v3) state = tf.multiply(mul, c1) init = tf.global_variables_initializer() mult = tf.matmul(v1, r1) with tf.Session() as sess: sess.run(init) #print(sess.run(v1)) #print(sess.run(mult, feed_dict={r1:[[2,3],[4, 5],[5,6] ]})) print(sess.run(state)) print(sess.run(state, feed_dict={v2:4}))
结果:
30.0
60.0
2.feed_dict可以用来设置graph的输入值
此时,它不是一个tensor, 而是一个占位符。
例2:
import tensorflow as tf
#2x3的Tensor。 全1
v1 = tf.Variable(tf.ones([2,3],
dtype=tf.int32))
#3x2 的Tensor.等待输入。
r1 = tf.placeholder(dtype=tf.int32, shape=[3,2])
init = tf.global_variables_initializer()
#两者想乘,应该是个2x2的Tensor
mult = tf.matmul(v1, r1)
with tf.Session() as sess:
sess.run(init)
print(sess.run(v1))
print(sess.run(mult,
feed_dict={r1:[[2,3],[4, 5],[5,6] ]}))
#临时给出了r1的值。计算结果
结果是:
[[1 1 1] [1 1 1]] [[11 14] [11 14]]