Quantcast
Channel: Sam的技术Blog
Viewing all articles
Browse latest Browse all 158

Tensorflow中的feed

$
0
0
作者: 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]]













 

Viewing all articles
Browse latest Browse all 158

Trending Articles