【问题标题】:Feed empty list to (multidimensional) tensorflow placeholder将空列表提供给(多维)张量流占位符
【发布时间】:2018-04-26 11:20:47
【问题描述】:

在 Python 中,我试图将一个空列表提供给一个第一维为 None 的多维张量流占位符。

import tensorflow as tf

a = [0,1,2]
b = [[4,5,6],
     [7,8,9]]
c = []

# 1-D and 2-D placeholders
p_1D = tf.placeholder(shape=(None),   dtype=tf.float32)
p_2D = tf.placeholder(shape=(None,3), dtype=tf.float32)

with tf.Session() as sess:
    print(sess.run(p_1D, feed_dict={p_1D:a})) # prints [0.,1.,2.]
    print(sess.run(p_2D, feed_dict={p_2D:b})) # prints [[4.,5.,6.],
                                              #         [7.,8.,9.]]
    print(sess.run(p_1D, feed_dict={p_1D:c})) # prints []
    print(sess.run(p_2D, feed_dict={p_2D:c})) # raises ValueError

具体来说,引发的错误是ValueError: Cannot feed value of shape (0,) for Tensor 'Placeholder_3:0', which has shape '(?, 3)

由此,我可以看到如果空列表只有 1 个维度(None),则可以将空列表提供给占位符,但更高维度的占位符似乎不允许这样做。有没有办法让高维占位符接受一个空列表作为输入?

(是的,我知道,想要输入一个空列表可能看起来很愚蠢,但如果有解决方案,它仍然会有所帮助。)

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    feed_dict={p_1D: np.zeros(shape=(0,), dtype=np.float32), p_2D: np.zeros(shape=(0, 3), dtype=np.float32)}

    【讨论】:

    • 嗯,很有趣。我不知道 numpy 中的该功能。另外,我想你的意思是p_2D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    相关资源
    最近更新 更多