1. 前言
TensorFlow 是 Google 发布的一个开源的人工智能框架。它的名字来源于一个最基本的计算单元,张量,即 n 维数组。TensorFlow的主要功能是搭建人工智能模型,其中最重要的操作就是矩阵运算。因此,本文将介绍 TensorFlow 中常用的矩阵生成方式以及对应的代码实现。
2. 创建矩阵
2.1 tf.constant
tf.constant 是 TensorFlow 中最基本的创建 Tensor 对象的函数,可以用于创建常量 Tensor,其中输入的 value 格式可以是列表,数组或者 Tensor 对象。下面是一个示例代码:
import tensorflow as tf
tensor = tf.constant([1, 2, 3, 4, 5])
print(tensor)
这段代码创建了一个常量 Tensor,其中包含了 [1, 2, 3, 4, 5] 这个数组。运行结果如下:
输出:
tf.Tensor([1 2 3 4 5], shape=(5,), dtype=int32)
注意,这里的 shape=(5,) 表示的是一个一维数组,也可以用 shape=(5,1) 表示一个列向量。
2.2 tf.zeros
tf.zeros 可以用于创建全零 Tensor,可以指定 Tensor 的形状,如下所示:
import tensorflow as tf
tensor = tf.zeros(shape=(3,3))
print(tensor)
这段代码创建了一个 3 行 3 列的全零 Tensor。运行结果如下:
输出:
tf.Tensor([[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]], shape=(3, 3), dtype=float32)
2.3 tf.ones
tf.ones 可以用于创建全一 Tensor,用法与 tf.zeros 相似,如下所示:
import tensorflow as tf
tensor = tf.ones(shape=(3,3))
print(tensor)
这段代码创建了一个 3 行 3 列的全一 Tensor。运行结果如下:
输出:
tf.Tensor([[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]], shape=(3, 3), dtype=float32)
2.4 tf.eye
tf.eye 可以用于创建单位矩阵,用法如下:
import tensorflow as tf
tensor = tf.eye(num_rows=3, num_columns=3)
print(tensor)
这段代码创建了一个 3 行 3 列的单位矩阵。运行结果如下:
输出:
tf.Tensor([[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]], shape=(3, 3), dtype=float32)
2.5 tf.linspace
tf.linspace 可以用于创建等差数列,用法如下:
import tensorflow as tf
tensor = tf.linspace(start=0.0, stop=1.0, num=5)
print(tensor)
这段代码创建了一个长度为 5,起始值为 0,终止值为 1 的等差数列。运行结果如下:
输出:
tf.Tensor([0. 0.25 0.5 0.75 1. ], shape=(5,), dtype=float32)
2.6 tf.random
tf.random 可以用于创建随机 Tensor,包含了多种生成随机 Tensor 的方式,如下所示:
import tensorflow as tf
# 生成随机符合正态分布的 Tensor
normal_tensor = tf.random.normal(shape=(3,3))
# 生成随机符合均匀分布的 Tensor
uniform_tensor = tf.random.uniform(shape=(3,3))
print(normal_tensor, uniform_tensor)
这段代码创建了两个 3 行 3 列的随机 Tensor,分别符合正态分布和均匀分布。运行结果如下:
输出:
tf.Tensor([[ 0.27409807 -1.2081351 -0.11229485] [ 2.172171 1.1495562 1.6142488 ] [-0.34132147 0.9965085 -1.6921294 ]], shape=(3, 3), dtype=float32) tf.Tensor([[0.82646227 0.43214178 0.19869709] [0.49784505 0.57923496 0.3614092 ] [0.29726315 0.32672548 0.2697265 ]], shape=(3, 3), dtype=float32)
3. 改变 Tensor 形状
3.1 tf.reshape
tf.reshape 可以用于改变 Tensor 的维度和形状,如下所示:
import tensorflow as tf
# 创建一个 3 行 3 列的 Tensor
tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 转换为一维数组
tensor = tf.reshape(tensor, shape=(9,))
print(tensor)
这段代码将一个 3 行 3 列的 Tensor 转换为了一个一维数组。运行结果如下:
输出:
tf.Tensor([1 2 3 4 5 6 7 8 9], shape=(9,), dtype=int32)
3.2 tf.expand_dims
tf.expand_dims 可以用于在 Tensor 中添加新的维度,如下所示:
import tensorflow as tf
# 创建一个形状为 (3,3) 的 Tensor
tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 在第二个维度上添加新的维度
tensor = tf.expand_dims(tensor, axis=1)
print(tensor)
这段代码在一个形状为 (3,3) 的 Tensor 中添加了一个新的维度,这个新维度位于第二个维度。运行结果如下:
输出:
tf.Tensor([[[1 2 3]] [[4 5 6]] [[7 8 9]]], shape=(3, 1, 3), dtype=int32)
4. 结论
以上是 TensorFlow 中常见的矩阵生成方式以及对应的代码实现。掌握了这些方法,我们可以更加方便快捷地创建和操作 Tensor 对象,从而更加高效地设计和训练人工智能模型。