【问题标题】:Cannot convert a partially converted tensor in TensorFlow无法在 TensorFlow 中转换部分转换的张量
【发布时间】:2016-05-19 07:17:30
【问题描述】:

TensorFlow中有很多方法需要指定形状,例如truncated_normal:

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

我有一个用于输入形状 [None, 784] 的占位符,其中第一个维度是 None,因为批量大小可能会有所不同。我可以使用固定的批量大小,但它仍然与测试/验证集大小不同。

我无法将此占位符提供给 tf.truncated_normal,因为它需要完全指定的张量形状。让 tf.truncated_normal 接受不同张量形状的简单方法是什么?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    您只需将其作为单个示例输入,但以批处理的形式输入。所以这意味着向形状添加额外的维度,例如

    batch_size = 32 # set this to the actual size of your batch
    tf.truncated_normal((batch_size, 784), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
    

    这样它将“适合”占位符。

    如果您希望 batch_size 发生变化,您也可以使用:

    tf.truncated_normal(tf.shape(input_tensor), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
    

    input_tensor 可以是一个占位符,也可以是任何将要添加此噪声的张量。

    【讨论】:

    • 我对假设的解决方案很感兴趣,因为我一直在寻找一个。
    • 你能扩展一下假设的解决方案吗,它和这里有什么不同?也许提出一个新的 SO 问题?
    • 我没有看到您的编辑,它工作正常。我不知道 tf.shape()
    • @DanielSlater 如果 input_tensor 的形状是 [None] 怎么办?
    • @Munichong 只要你调用 tf.shape(input_tensor) 就可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2016-03-09
    • 1970-01-01
    • 2016-10-15
    相关资源
    最近更新 更多