一、名词解释
在Tensorflow里:
- 使用张量(tensor)表示数据。
- 使用图(graph)来表示计算任务。
- 在被称之为会话(Session)的上下文(context)中执行图。 通过变量 (Variable)维护状态。
- 使用feed和fetch可以为任意的操作(arbitrary operation)赋值或者从其中获取数据。
张量(tensor):
张量可以看作是多重向量空间映射到实数域空间。说白了就是多维数组。
- 标量是张量(实数值映射到实数值)
- 向量是张量
- 矩阵是张量
- 矩阵的矩阵是张量
所以在tensorflow 中:
- constant 常量张量
- variable 变量,一般是可以被更更新或更改的数值
而numpy虽然也提供n位数组,但不提供创建张量函数和求导,也不提供GPU支持
b = np.array( [ (1.5,2,3), (4,5,6) ] )
二、Variable与numpy之间的相互转化
1 直接转化
# -*- coding: utf-8 -*-
import tensorflow as tf
# 创建张量
t = tf.constant([1, 2, 3, 4], tf.float32)
# 创建会话
session = tf.Session()
# 张量转化为ndarray
array = session.run(t)
# 打印其数据类型与其值
print(type(array))
print(array)
<class 'numpy.ndarray'>
[ 1. 2. 3. 4.]
2 利用Tensor的成员函数eval
# -*- coding: utf-8 -*-
import tensorflow as tf
# 创建张量
t = tf.constant([1, 2, 3, 4], tf.float32)
# 创建会话
session = tf.Session()
# 张量转化为ndarray
array = t.eval(session=session)
# 打印其数据类型与其值
print(type(array))
print(array)
<class 'numpy.ndarray'>
[ 1. 2. 3. 4.]
3.ndarray转化为tensor
TensorFlow 通过 convert_to_tensor 这个函数进行转换,代码如下:
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
# 创建ndarray
array = np.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)