如何在 tensorflow mnist_softmax.py 中打印张量的值

Posted

技术标签:

【中文标题】如何在 tensorflow mnist_softmax.py 中打印张量的值【英文标题】:How to print the value of a tensor in tensorflow mnist_softmax.py 【发布时间】:2016-09-01 00:10:51 【问题描述】:

我刚刚尝试在 TensorFlow 0.8 中运行 mnist_softmax.py。 我想在模型测试步骤之前观察yy_ 的值。

下面是代码:

print(y)  # added by me
print(y_)  # added by me

# Test trained model
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

完整的代码可在GitHub 获得。

下面是输出:

Tensor("Softmax:0", shape=(?, 10), dtype=float32)
Tensor("Placeholder_1:0", shape=(?, 10), dtype=float32)

我也尝试过使用sess.run(y)y.eval(),但是尝试时出现这样的错误:

tensorflow.python.framework.errors.InvalidArgumentError: You must feed a value for placeholder tensor 'Placeholder' with dtype float
         [[Node: Placeholder = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
Caused by op u'Placeholder', defined at: ...

【问题讨论】:

查看:***.com/questions/33610685/… 【参考方案1】:

TL;DR: yy_ 张量都依赖于 tf.placeholder() 操作,因此它们需要您输入输入值评估了他们。您可以通过输入一批输入来在一批输入数据上打印 softmax 的输出,如下所示:

batch_xs, _ = mnist.train.next_batch(100)
print(y.eval(x: batch_xs))

MNIST 示例包含以下几行:

# Create the model
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)

请注意,您尝试打印的第一个张量yx 的函数,它被定义为tf.placeholder()tf.placeholder() op 是一种为计算定义符号 argument 的方法:它本身没有任何值,但它表示 x 必须是具有 784 列的浮点值矩阵.

运行/评估 y 而不提供 x 的值就像编写以下 Python 函数并在没有所有参数的情况下调用它:

def y(x):
    W = ...
    b = ...
    return softmax(matmul(x, W), b)

# This would fail with an error.
print(y())

如何为参数指定一个值?在 TensorFlow 中,您可以通过 输入 占位符的值来做到这一点(例如在 training loop 和 accuracy calculation 中):

# Get a batch of input data to feed to the computation.
batch_xs, _ = mnist.train.next_batch(100)

print(sess.run(y, feed_dict=x: batch_xs))
# or
print(y.eval(x: batch_xs))

张量y_定义为tf.placeholder()。出于技术原因,您无法直接评估占位符,即使您为其输入值也是如此。但是,这样做并不是特别有用!相反,您可以只打印您想要输入的值。

【讨论】:

谢谢你,先生。我被这个问题困扰了一整天。你的解释比 tensorflow.org 清楚得多。

以上是关于如何在 tensorflow mnist_softmax.py 中打印张量的值的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow如何入门?

如何在单核上运行 Tensorflow?

如何在 Google 云中设置 TensorFlow?

如何在 CPU 上运行 TensorFlow

tensorflow 如何在线训练模型

如何在 tensorflow 中克隆 git 存储库 [重复]