Tensorflow:将张量转换为numpy数组,无需使用.eval()或sess.run()

8

如何在不使用eval或sess.run()的情况下将张量转换为Numpy ndarray?

我需要将一个张量传递到feed dictionary中,而我已经有一个正在运行的会话。


将Tensor视为计算图中的占位符,它没有值,因此您不能将其直接转换为Numpy数组。但是,您可以使用eval或run“查询”在计算中流向它的值。您究竟想要实现什么?可能有更好的方法来完成它。 - Avishkar Bhoopchand
3个回答

5

你说“已经有一个会话正在运行”这一事实暗示了你对sess.run()的实际作用存在误解。

如果你已经初始化了一个tf.Session(),那么你应该能够使用它来通过sess.run()获取任何张量。如果你需要获取一个变量或常量张量,这非常简单。

value = sess.run(tensor_to_retrieve)

如果张量是占位张量上的操作结果,您需要使用feed_dict传入它们。
value = sess.run(tensor, feed_dict={input_placeholder: input_value})

没有任何限制阻止您调用sess.run()多次。


0

@jasekp的回答帮了我很多。在表示(对抗性)图像的张量特定情况下,我面临了张量->数组转换的问题。

我认为我的问题/答案(here)可能是这个具体情况的有用示例,或者可以帮助新手更好地理解@jasekp的答案。

我的示例还涵盖了matplotlib图像可视化部分,但这是OT。


-3

.numpy()会将张量转换为数组。


// 这是一个注释,不是答案 - Bruce
1
".numpy()仅适用于急切张量而不是普通张量。" - Syed Alam Abbas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接