【问题标题】:How can I convert a tensor into a ndarray in TensorFlow?如何在 TensorFlow 中将张量转换为 ndarray?
【发布时间】:2019-08-13 06:04:23
【问题描述】:

我的目标是将张量转换为不带“运行”或“评估”的 ndarray。 我想执行与示例相同的操作。

A = tf.constant(5)
B = tf.constant([[A, 1], [0,0]])

但是,ndarray 可以在 tf.constant 内部,但 tensor 不能。 因此,我尝试使用以下示例执行操作,但 tf.make_ndarray 不起作用。

A = tf.constant(5)
C = tf.make_ndarray(A)
B = tf.constant([[C, 1], [0,0]])

https://github.com/tensorflow/tensorflow/issues/28840#issuecomment-509551333

如上面的 github 链接中所述,tf.make_ndarray 不起作用。 准确地说,是因为tensorflow需要一个不存在的“tensor_shape”,而不是一个存在的“shape”,所以发生了错误。

在这种情况下如何运行代码?

【问题讨论】:

标签: python tensorflow


【解决方案1】:

tf.make_ndarray 用于将TensorProto 值转换为 NumPy 数组。这些值通常是图表中使用的常数。例如,当您使用tf.constant 时,您将创建一个Const 操作,其属性value 保存操作将产生的常量值。该属性存储为TensorProto。因此,您可以将 Const 操作的值“提取”为 NumPy 数组,如下所示:

import tensorflow as tf

A = tf.constant(5)
C = tf.make_ndarray(A.op.get_attr('value'))
print(C, type(C))
# 5 <class 'numpy.ndarray'>

不过,一般来说,您不能将任意张量转换为 NumPy 数组,因为它们的值将取决于变量的值和特定会话中的馈送输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2021-11-19
    • 2020-06-27
    相关资源
    最近更新 更多