2019独角兽企业重金招聘Python工程师标准>>>
详细解释 feeding 和 placeholders?
艾伯特(http://www.aibbt.com/)国内第一家人工智能门户
Feeding 是 TensorFlow Session API 的一种机制,它允许你在运行时用不同的值替换一个或多个 tensor 的值。Session.run()
的参数 feed_dict
是一个字典, 它将 Tensor
对象映射为 numpy 的数组(和一些其他类型)。 在执行 step 时,这些数组就是 tensor 的值。
你常会碰到某些 tensor 总是有值的,比如 inputs。 tf.placeholder()
操作(operation)允许你定义一种必须提供值的 tensor ,你也可以随意限定它们的 shape。关于如何使用 placelolders 和 feeding 为神经网络提供训练数据的例子,请参看初学者的 MNIST 教程
Session.run()
和 Tensor.eval()
有什么区别?
如果 t
是一个 Tensor
对象, t.eval()
就是 sess.run(t)
(sess
是当前默认 session)的简写。 以下两段小程序是等效的:
# 使用 `Session.run()`.
sess = tf.Session()
c = tf.constant(5.0)
print sess.run(c)# 使用 `Tensor.eval()`.
c = tf.constant(5.0)
with tf.Session():print c.eval()
在第二个例子中, session 的作用就象 context manager , context manager 在 with
块的生存期,将 session 作为默认的 session。对简单应用的情形(如单元测试),context manager 的方法可以得到更简洁的代码; 如果你的代码要处理多个 graph 和 session ,更直白的方式可能是显式调用 Session.run()
。