placeholder_with_default与placeholder区别

4,764次阅读
没有评论

共计 661 个字符,预计需要花费 2 分钟才能阅读完成。

现在的项目里普遍使用Estimator一套,使用tf.data构建数据流。听大佬讲代码提到为什么使用前者不用后者?

首先看下两者的定义:

tf.placeholder_with_default(input, shape, name=None)

tf.compat.v1.placeholder(
    dtype, shape=None, name=None
)
二者的区别在于传参。placeholder_with_default 需要传入对应的input,官方文档说output没有被fed时此时获取的是input
的数据。
这句话乍一看还真的不好理解,output是啥?
在这里实际上是 placeholder_with_default 这个函数的返回值,就是定义了一个Tensor 更好听的就是占位符。

给这个Tensor赋值有两种情况:
(1)在模型训练阶段:从数据流可以获取数据喂到这个 Tensor,该值就是与 Input 一致。
(2)在线上推理的时候直接喂到这个 Tensor。
上面的第二点就阐述了官方文档的说明,可以仔细的品一下。

对于 Placeholder 很早以前使用过,那时候的使用还是使用Tf.Session 然后使用feed_dict的方式给Tensor赋值
这个有个问题就是feed_dict要求传入的值都是原始类型,对比 placeholder_with_default 可以传入一个Tensor,
这个很容易与数据流打通,尤其是对Tfrecord数据的读取过程。如果是读取原始数据的确是可以使用Placeholder,但是现在
但是现在应该不太建议了。
正文完
请博主喝杯咖啡吧!
post-qrcode
 
admin
版权声明:本站原创文章,由 admin 2020-12-21发表,共计661字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码