Tensorfow中Tensor与Numpy的ndarray转换

时间:2025-05-05 20:57:35

一、Numpy的简单介绍

NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),其核心数据结构为ndarray

二、用Numpy转换的原因

import tensorflow as tf
t = ([1, 2, 3], tf.float32)
print(t)

Tensor("Const:0", shape=(3,), dtype=float32)

从此可以看出,没有打印出张量的值,只是打印出了一部分信息。Tensorflow 通过创建会话(session),将张量转化为Numpy中的ndarray,从而打印出张量的值。

三、tensor与ndarray的相互转换

3.1 tensor转化为ndarray

3.1.1 直接转化
# -*- coding: utf-8 -*-
import tensorflow as tf
# 创建张量
t = ([1, 2, 3, 4], tf.float32)
# 创建会话
session = ()
# 张量转化为ndarray
array = (t)
# 打印其数据类型与其值
print(type(array))
print(array)

<class ''>
[ 1.  2.  3.  4.]
3.1.2 利用Tensor的成员函数eval
# -*- coding: utf-8 -*-
import tensorflow as tf
# 创建张量
t = ([1, 2, 3, 4], tf.float32)
# 创建会话
session = ()
# 张量转化为ndarray
array = (session=session)
# 打印其数据类型与其值
print(type(array))
print(array)

<class ''>
[ 1.  2.  3.  4.]

以上代码的另外一种写法为:

# -*- coding: utf-8 -*-
import tensorflow as tf
# 创建张量
t = ([1, 2, 3, 4], tf.float32)
# 张量转化为ndarray
with () as session:
    array = ()
    # 打印其数据类型与其值
    print(type(array))
    print(array)

<class ''>
[ 1.  2.  3.  4.]

3.2 ndarray转化为tensor

TensorFlow 通过 convert_to_tensor 这个函数进行转换,代码如下:

# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
# 创建ndarray
array = ([1, 2, 3, 4], np.float32)
# 将ndarray转化为tensor
t = tf.convert_to_tensor(array, tf.float32, name='t')
# 打印输出
print(t)

Tensor("t:0", shape=(4,), dtype=float32)