当使用Tensorflow与Python绑定时,如何将一个张量转换为numpy数组?
当前回答
如果你看到有一个方法_numpy(), 例如,对于一个EagerTensor,简单地调用上面的方法,你将得到一个ndarray。
其他回答
为了这个命令,我找了好几天。
这对我来说在任何会议之外或类似的事情都很有效。
# you get an array = your tensor.eval(session=tf.compat.v1.Session())
an_array = a_tensor.eval(session=tf.compat.v1.Session())
https://kite.com/python/answers/how-to-convert-a-tensorflow-tensor-to-a-numpy-array-in-python
TensorFlow 2.倍
Eager Execution在默认情况下是启用的,所以只需在Tensor对象上调用.numpy()即可。
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'对象没有属性'numpy'? 很多人都对这个问题发表了评论,有几个可能的原因:
TF 2.0没有正确安装(在这种情况下,请尝试重新安装),或者 已经安装了TF 2.0,但是由于某种原因禁用了快速执行。在这种情况下,调用tf. compatat .v1.enable_eager_execution()来启用它,或参见下文。
如果禁用了Eager Execution,你可以构建一个图,然后通过tf. compatat .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的映射。
你可以用以下方法将tensorflow中的张量转换为numpy数组。
第一: 使用np.array (your_tensor)
第二: 使用your_tensor.numpy
一个简单的例子是,
import tensorflow as tf
import numpy as np
a=tf.random_normal([2,3],0.0,1.0,dtype=tf.float32) #sampling from a std normal
print(type(a))
#<class 'tensorflow.python.framework.ops.Tensor'>
tf.InteractiveSession() # run an interactive session in Tf.
n 现在如果我们想把这个张量a转换成一个numpy数组
a_np=a.eval()
print(type(a_np))
#<class 'numpy.ndarray'>
就这么简单!
我已经面对并解决了张量->ndarray转换在张量表示(对抗)图像的特定情况下,通过cleverhans库/教程获得。
我认为我的问题/答案(在这里)也可能是一个有用的例子,对其他情况。
我是TensorFlow的新手,我的结论是经验的:
看起来为了成功,tensor.eval()方法可能还需要输入占位符的值。 Tensor可以像一个函数一样工作,需要它的输入值(提供给feed_dict)来返回一个输出值,例如:
array_out = tensor.eval(session=sess, feed_dict={x: x_input})
请注意,在我的例子中,占位符的名称是x,但我认为您应该为输入占位符找出正确的名称。 X_input是一个包含输入数据的标量值或数组。
在我的案例中,提供sess也是强制性的。
我的示例还包括matplotlib图像可视化部分,但这是OT。
推荐文章
- 如何构建和使用谷歌TensorFlow c++ api
- Numpy Max vs amax vs maximum
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 每n行有熊猫
- 实例属性attribute_name定义在__init__之外
- 如何获取在Python中捕获的异常的名称?
- 第一次出现的值大于现有值的Numpy
- 如何从Python函数中返回两个值?
- 前一个月的Python日期
- Python中方括号括起来的列表和圆括号括起来的列表有什么区别?
- Python日志记录不输出任何东西
- 每n秒运行特定代码
- SQLAlchemy是否有与Django的get_or_create等价的函数?
- 如何将python datetime转换为字符串,具有可读格式的日期?
- 美丽的汤和提取div及其内容的ID