gpt4 book ai didi

python - 在 Tensorflow 中将张量转换为 numpy 数组?

转载 作者:IT老高 更新时间:2023-10-28 12:32:30 25 4
gpt4 key购买 nike

在使用带有 Python 绑定(bind)的 Tensorflow 时如何将张量转换为 numpy 数组?

最佳答案

TensorFlow 2.x

Eager Execution默认启用,所以只需调用 .numpy()在张量对象上。

import tensorflow as tf

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

a.<b>numpy()</b>
# array([[1, 2],
# [3, 4]], dtype=int32)

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

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

NumPy Compatibility更多。值得注意的是(来自文档),

Numpy array may share a memory with the Tensor object. Any changes to one may be reflected in the other.

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

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

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

如果禁用了 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=<b>tf.compat.v1.Session()</b>)
# array([[ 2, 6],
# [12, 20]], dtype=int32)

另见 TF 2.0 Symbols Map用于将旧 API 映射到新 API。

关于python - 在 Tensorflow 中将张量转换为 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com