| 维度 | 阶 | 名字 | 例子 |
|---|---|---|---|
| 0-D | 0 | 标量 | s=1 2 3 |
| 1-D | 1 | 向量 | v = [1, 2, 3] |
| 2-D | 2 | 矩阵 | m = [[1, 2, 3], [4, 5, 6]] |
| n-D | n | 张量 | t = [[[ … |
-
tf.int, tf.float …
tf.int32 tf.float32 tf.float64
-
tf.bool
tf.constant([True, False])
-
tf.string
tf.constant(“Hello”)
tf.constant(张量内容, dtype=数据类型(可选)) # 将numpy的数据类型转化为Tensor数据类型 tf.convert_to_tensor(数据名, dtype=数据类型(可选)) # 创建全为0的张量 tf.zeros(维度) # 创建全为1的张量 tf.ones(维度) # 创建全为指定值的张量 tf.fill(维度, 指定值) # 生成正态分布的随机数,默认均值为0,标准差为1 tf.random.normal(维度, mean=均值, stddev=标准差) # 生成断崖式正态分布的随机数 tf.random.truncated_normal(维度, mean=均值, stddev=标准差) # 这里如果生成的随机数取值在(µ-2∂)之外,则重新生成,保证了生成值在均值附近 #生成均匀分布随机数 tf.random.uniform(维度, minval=最小值, maxval=最大值)常用函数
# 强制tensor转化为该数据类型 tf.cast(张量名, dtype=数据类型) # 计算张量维度上元素的最小值 tf.reduce_min(张量名) # 计算张量维度上元素的最大值 tf.reduce_max(张量名)理解axis
在一个二维张量或数组中,可以通过调整axis等于0或1控制执行维度
- axis=0表示跨行(第一个维度, x轴),axis=1表示跨列(第二个维度, y轴)
- 如果不指定axis,则所有元素参与运算
# 计算张量沿着指定维度的平均值 tf.reduce_mean(张量名, axis=操作轴) # 计算张量沿着指定维度的和 tf.reduce_sum(张量名, axis=操作轴)tf.Variable
tf.Variable()将变量标记为"可训练的",被标记的变量会在反向传播中记录梯度信息。神经网络训练中,常用该函数标记待训练参数。
tf.Variable(初始值) w = tf.Variable(tf.random.normal([2, 2], mean=0, stddev=1))TensorFlow中的数学运算
对应元素的四则运算: tf.add, tf.subtract, tf.multiply, tf.divide
平方、次方和开方: tf.square, tf.pow, tf.sqrt
矩阵乘: tf.matmul
# 实现两个张量对应元素想加 tf.add(张量1, 张量2) # 实现两个张量对应元素相减 tf.subtract(张量1, 张量2) # 实现两个张量的元素对应相乘 tf.multiply(张量1, 张量2) # 实现两个张量的元素对应相除 tf.divide(张量1, 张量2) ## 只有维度相同的张量才可以四则运算tf.data.Dataset.from_tensor_slices
# 切分传入张量的第一维度,生成输入特征/标签对,构建数据集 data = tf.data.Dataset.from_tensor_slices((输入特征, 标签))tf.GradientTape
# with结构记录计算过程,gradient求出张量梯度 with tf.GradientTape() as tape: # 若干计算过程 grad = tape.gradient(函数, 对谁求导)enumerate
# enumerate是python的内建函数,它可以便利每个元素,组合为:索引 元素 # 常在for循环中使用 enumerate(列表名) # Example seq = ["one", "two", "three"] for i, element in enumerate(seq): print(i, element) # 运行结果 0 one 1 two 2 threetf.one_hot
# 独热编码:在分类问题中,常用独热编码做标签来标记类别 # 1表示是,0表示非 # tf.one_hot()函数将待转换数据,转换为one-hot形式的数据输出 tf.one_hot(待转换数据, depth=几分类) # Example classes = 3 labels = tf.constant([1, 0, 2]) # 输入的元素值最小为0,最大为2 output = tf.one_hot(labels, depth=classes) print(output) # 运行结果 [[0. 1. 0.] [1. 0. 0.] [0. 0. 1.]], shape=(3, 3), dtype=float32tf.nn.softmax
# tf.nn.softmax函数使输出符合概率分布 # 使输出值变为0~1之间的概率值 tf.nn.softmax(x) # Example y = tf.constant([1.01, 2.01, -0.66]) y_pro = tf.nn.softmax(y) print(y_pro) # 运行结果 tf.Tensor([0.25598174 0.69593046 0.0481878], shape=(3,), dtype=float32)assign_sub
# 赋值操作,更新参数的值并返回 # 调用assign_sub前,先用tf.Variable定义变量w为可训练的 w.assign_sub(w要自减的内容)tf.argmax
# 返回张量沿指定维度最大值的索引号 tf.argmax(张量名, axis=索引号)



