【TensorFlow】笔记:基本操作-张量操作(一)
TensorFlow 使用 张量 (Tensor)作为数据的基本单位。TensorFlow 的张量在概念上等同于多维数组,我们可以使用它来描述数学中的标量(0 维数组)、向量(1 维数组)、矩阵(2 维数组)等各种量。
基础知识
首先,我们导入tensorflow,
import tensorflow as tf
我们来创建一些基本张量,
tensor1 = tf.constant(4)
print(tensor1)
# output
tf.Tensor(4, shape=(), dtype=int32)
这是一个“标量”(或称“0 秩”张量)。标量包含单个值,但没有“轴”。
tensor2 = tf.constant([2.0, 3.0, 4.0])
print(tensor2)
# output
tf.Tensor([2. 3. 4.], shape=(3,), dtype=float32)
这是一个“向量”(或称“1 秩”张量)就像一个值的列表。向量有 1 个轴。
tensor3 = tf.constant([[1, 2],
[3, 4],
[5, 6]], dtype=tf.float16)
print(tensor3)
# output
tf.Tensor(
[[1. 2.]
[3. 4.]
[5. 6.]], shape=(3, 2), dtype=float16)
这是一个“矩阵”(或称“2 秩”张量)有 2 个轴。
总结
张量的轴可能更多,下面是一个包含 3 个轴的张量:
tensor4 = tf.constant([
[[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]],
[[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]],
[[20, 21, 22, 23, 24],
[25, 26, 27, 28, 29]],])
print(tensor4)
# output
tf.Tensor(
[[[ 0 1 2 3 4]
[ 5 6 7 8 9]]
[[10 11 12 13 14]
[15 16 17 18 19]]
[[20 21 22 23 24]
[25 26 27 28 29]]], shape=(3, 2, 5), dtype=int32)
张量通常包含浮点型和整型数据,但是还有许多其他数据类型,包括:
复杂的数值
字符串
tf.Tensor 基类要求张量是“矩形”——也就是说,每个轴上的每一个元素大小相同。但是,张量有可以处理不同形状的特殊类型。
我们可以对张量执行基本数学运算,包括加法、逐元素乘法和矩阵乘法运算。
a = tf.constant([[1, 2],
[3, 4]])
b = tf.constant([[1, 1],
[1, 1]])
print(tf.add(a, b), "\n") # 对应元素相加
print(tf.multiply(a, b), "\n") # 对应元素相乘
print(tf.matmul(a, b), "\n") # 做矩阵乘法
# output
tf.Tensor(
[[2 3]
[4 5]], shape=(2, 2), dtype=int32)
tf.Tensor(
[[1 2]
[3 4]], shape=(2, 2), dtype=int32)
tf.Tensor(
[[3 3]
[7 7]], shape=(2, 2), dtype=int32)
print(a + b, "\n") # element-wise addition
print(a * b, "\n") # element-wise multiplication
print(a @ b, "\n") # matrix multiplication
# output
tf.Tensor(
[[2 3]
[4 5]], shape=(2, 2), dtype=int32)
tf.Tensor(
[[1 2]
[3 4]], shape=(2, 2), dtype=int32)
tf.Tensor(
[[3 3]
[7 7]], shape=(2, 2), dtype=int32)
各种运算 (op) 都可以使用张量。
a = tf.constant([[4.0, 5.0], [10.0, 1.0]])
# 找最大值
print(tf.reduce_max(a))
# 找最大值的索引
print(tf.argmax(a))
# output
tf.Tensor(10.0, shape=(), dtype=float32)
tf.Tensor([1 0], shape=(2,), dtype=int64)
点击上方“蓝字”关注本公众号
点击上方“蓝字”关注本公众号
评论