【问题标题】:Cannot make array in using tensorflow无法使用 tensorflow 创建数组
【发布时间】:2016-02-03 12:15:27
【问题描述】:

在将 batch_xs 喂给 x 时,我重新调整了 batch_xs,因为 BATCH_SIZE 为 1。 这是我的来源。 我不确定是什么导致了 ValueError。

with tf.name_scope("input") as scope:
    x = tf.placeholder(tf.float32, shape=[1, 784])

BATCH_SIZE = 1
DROP_OUT_RATE = 0.4
EPOCH = 1
MEMORIZE = 10
accuracy_array = []
loss = tf.nn.l2_loss(y - x) / BATCH_SIZE
train_step = tf.train.AdamOptimizer(1e-4).minimize(loss)

mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
mnist_list = make_mnist_train_list(55000, 10)
test_list = make_mnist_test_list(5000, 10)
sess = tf.Session()
sess.run(tf.initialize_all_variables())

for i in range(EPOCH):
    for j in range(5500/BATCH_SIZE):
        batch_xs = tf.reshape(mnist_list[0][j*BATCH_SIZE:j*BATCH_SIZE+1], [1, 784])
        sess.run(train_step, feed_dict={x: batch_xs, keep_prob: (1.0 - DROP_OUT_RATE), r_keep_prob: (1.0 - DROP_OUT_RATE)})
        if (i +1)% MEMORIZE == 0:
            accuracy_array.append(loss.eval(session=sess, feed_dict={x: batch_xs, keep_prob: 1.0, r_keep_prob: 1.0}))
            print(accuracy_array[ int(math.floor((i+1)/MEMORIZE -1))])

这给了我价值错误,这对我来说没有意义。

ValueError: Argument must be a dense tensor

【问题讨论】:

  • 您的代码提到了“tf.nn.l2_loss(y - x) / BATCH_SIZE”,但没有在任何地方定义 y。这是完整的例子吗?还请附上错误的全文,希望能指出导致问题的行。

标签: tensorflow


【解决方案1】:

来自文档here

feed_dict 中的每个键都可以是以下类型之一:

  • 如果键是张量,则值可能是 Python 标量、字符串、列表或 numpy ndarray,可以转换为与该张量相同的 dtype。此外,如果键是占位符,则将检查值的形状是否与占位符兼容。

  • 如果 key 是 SparseTensor,则 value 应该是 SparseTensorValue。

您可以用作feed_dict 中键的“值”的类型应该是 Python 原始类型或 numpy 数组。您正在使用 tf.reshape 的结果,它是一种 TensorFlow 张量类型。如果你想提供一个重新整形的数组,你可以简单地使用np.reshape

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    相关资源
    最近更新 更多