【问题标题】:Getting shape of a Tensorflow placeholder获取 TensorFlow 占位符的形状
【发布时间】:2018-01-25 05:52:01
【问题描述】:

我正在尝试在 Tensorflow 中获取占位符的尺寸。函数tf$shape 立即浮现在我的脑海中。我使用tf$shape 来获得具有正尺寸的占位符的形状没有任何问题。但是,我希望占位符能够接受不同大小的输入,所以我将一维保留为NULL。现在,根据我的理解,当涉及到维度时,Tensorflow 对 NULL-1 的处理是等价的。但是,当我运行我的代码时,我收到了这个错误:

W tensorflow/core/framework/op_kernel.cc:1148] 无效参数:形状 [-1,2] 具有负尺寸

以下是我的代码的可重现示例:

a = tf$placeholder(tf$float32, shape = shape(NULL, 2L))    
sess = tf$Session()
sess$run(tf$shape(a))

上面引用的错误是由我的代码中的某些内容引起的,还是因为tf$shape 不能接受具有负尺寸的占位符?如果后者是真的,我有什么办法可以在不使用tf$shape的情况下获得具有负尺寸的占位符的形状?

【问题讨论】:

    标签: r machine-learning tensorflow deep-learning


    【解决方案1】:

    tf$shape(a) 操作返回一个张量,其中包含占位符张量 adynamic shapea 的动态形状取决于您为 a 提供的值;如果您不输入值,则动态形状未定义。因此,您必须在 sess$run(tf$shape(a)) 调用中为 a 提供一个值。

    不幸的是,您看到的特定错误(“形状 [-1,2] 具有负尺寸”)没有帮助,因为 TensorFlow 1.2 中存在关于占位符操作如何处理部分定义的形状的错误。如果您升级到 TensorFlow 1.3(目前可作为候选版本)或更高版本,此错误已得到修复,您将收到如下错误:

    您必须使用 dtype float32 和 shape [?,2] 为占位符张量“Placeholder”提供一个值

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2016-12-25
    • 1970-01-01
    相关资源
    最近更新 更多