当前位置: 首页 > 面试题库 >

将张量转换为Tensorflow中的numpy数组?

安明亮
2023-03-14
问题内容

将Tensorflow与Python绑定一起使用时,如何将张量转换为numpy数组?


问题答案:

急切执行默认情况下
.numpy()

处于启用状态,因此只需调用Tensor对象即可。

import tensorflow as tf

a = tf.constant([[1, 2], [3, 4]])                 
b = tf.add(a, 1)

a. **numpy()**
# array([[1, 2],
#        [3, 4]], dtype=int32)

b. **numpy()**
# array([[2, 3],
#        [4, 5]], dtype=int32)

tf.multiply(a, b). **numpy()**
# array([[ 2,  6],
#        [12, 20]], dtype=int32)

有关更多信息,请参见NumPy兼容性。值得注意的是(来自文档),

Numpy数组可以与Tensor对象共享内存。 对一个的任何更改都可能反映在另一个上。

大胆强调我的。副本可以返回也可以不返回,这是基于数据是在CPU还是GPU中的实现细节(在后一种情况下,必须从GPU复制到主机内存)。

但是我为什么得到AttributeError: 'Tensor' object has no attribute 'numpy'
许多人对此问题发表了评论,有两个可能的原因:

  • TF 2.0安装不正确(在这种情况下,请尝试重新安装),或者
  • 已安装TF 2.0,但由于某些原因禁用了急切执行。在这种情况下,请致电tf.compat.v1.enable_eager_execution()启用它,或参阅下文。

如果禁用了“急切执行”,则可以构建一个图形,然后通过tf.compat.v1.Session以下方式运行它:

a = tf.constant([[1, 2], [3, 4]])                 
b = tf.add(a, 1)
out = tf.multiply(a, b)

out.eval(session= **tf.compat.v1.Session()** )    
# array([[ 2,  6],
#        [12, 20]], dtype=int32)

另请参见TF
2.0符号映射,以获取旧API到新API的映射。



 类似资料:
  • 不能将符号张量(up_sampling2d_4_target: 0)转换为Numpy数组。 得到以下错误 --------------------------------------------------------------------------- 没有实现错误跟踪(最近的调用最后)在14 15而True:--- 在适合()1 def适合(): ---- ~/venv/lib/python

  • 我尝试将2个损失函数传递给模型,因为Keras允许这样做。 损失:字符串(目标函数的名称)或目标函数或损失实例。见损失。如果模型有多个输出,您可以通过传递字典或损失列表对每个输出使用不同的损失。该模型将使损失值最小化,然后将是所有单个损失的总和。 两个损失函数: 和 然后我构建模型: 当我训练时,它会产生错误: 请帮忙,谢谢!

  • 问题内容: 假设我有一个形状为(1,256)的行向量。我想将其转换为形状为(256,1)的列向量。您在Numpy中会如何做? 问题答案: 您可以使用 转置 操作来执行此操作: 例: 请注意,原始数组仍将保持不变。转置操作只会复制并转置它。 如果输入阵列是相当1D中,则可以 促进 通过引入新的(singleton)的轴作为所述第二尺寸数组的列向量。下面是一个示例: 对于一维情况,还有另一个选择是使用

  • 问题内容: 我想将图像转换为NumPy数组再转换为PySide QPixmap,因此可以显示它(在PySide UI中编辑:)。我已经找到了此工具:qimage2ndarray,但它仅适用于PyQt4。我试图对其进行更改以使其能够与PySide一起使用,但是我将不得不更改该工具的C部分,并且我没有使用C的经验。我该怎么做?或者有其他选择吗? 问题答案: 一种选择是仅使用PIL库。 您可以在http

  • 问题内容: 注意: 这要求与通常的元组到数组的转换相反。 我必须将一个参数传递给(包装的c ++)函数作为嵌套元组。例如,以下作品 而以下 不 不幸的是,我想使用的参数是一个numpy数组。对于某些N,该阵列的尺寸始终为2xN,这可能会很大。 有没有简单的方法可以将其转换为元组?我知道我可以循环遍历,创建一个新的元组,但是如果numpy数组提供了一些不错的访问权限,我会更喜欢。 如果不可能如我所愿

  • 问题内容: 我正在尝试将代表黑白图像的2D Numpy数组转换为3通道OpenCV数组(即RGB图像)。 基于代码示例和文档,我正尝试通过Python执行此操作,例如: 但是,对CvtColor()的调用将引发以下cpp级异常: 我究竟做错了什么? 问题答案: 您的代码可以固定如下: 简短说明: 数据类型不受OpenCV的支持(它支持,,,,,,) 无法处理numpy数组,因此必须将两个参数都转换