当使用Tensorflow与Python绑定时,如何将一个张量转换为numpy数组?
当前回答
我成功地把TensorGPU变成了np。数组使用以下 :
np.array(tensor_gpu.as_cpu())
(直接使用TensorGPU只会导致包含TensorGPU的单元素数组)。
其他回答
你可以用以下方法将tensorflow中的张量转换为numpy数组。
第一: 使用np.array (your_tensor)
第二: 使用your_tensor.numpy
任何由Session.run或eval返回的张量都是NumPy数组。
>>> print(type(tf.Session().run(tf.constant([1,2,3]))))
<class 'numpy.ndarray'>
Or:
>>> sess = tf.InteractiveSession()
>>> print(type(tf.constant([1,2,3]).eval()))
<class 'numpy.ndarray'>
或者,相当于:
>>> sess = tf.Session()
>>> with sess.as_default():
>>> print(type(tf.constant([1,2,3]).eval()))
<class 'numpy.ndarray'>
EDIT: Session.run或eval()返回的张量不是NumPy数组。例如,稀疏张量返回为SparseTensorValue:
>>> print(type(tf.Session().run(tf.SparseTensor([[0, 0]],[1],[1,2]))))
<class 'tensorflow.python.framework.sparse_tensor.SparseTensorValue'>
我已经面对并解决了张量->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。
如果你看到有一个方法_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
推荐文章
- 如何以编程方式获取python.exe位置?
- 如何跳过循环中的迭代?
- 使用Pandas为字符串列中的每个值添加字符串前缀
- ImportError:没有名为matplotlib.pyplot的模块
- 在python中遍历对象属性
- 如何在Python中使用方法重载?
- 在Python中提取文件路径(目录)的一部分
- 如何安装没有根访问权限的python模块?
- 尝试模拟datetime.date.today(),但不工作
- 将行添加到数组
- 如何在Python中直接获得字典键作为变量(而不是通过从值搜索)?
- Python:为什么functools。部分有必要吗?
- 如何用python timeit对代码段进行性能测试?
- Python迭代器中的has_next ?
- ConfigParser中的列表