维度 | 阶 | 名字 | 例子 |
---|---|---|---|
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等于0或1控制执行维度
# 计算张量沿着指定维度的平均值
tf.reduce_mean(张量名, axis=操作轴)
# 计算张量沿着指定维度的和
tf.reduce_sum(张量名, axis=操作轴)
tf.Variable()将变量标记为"可训练的",被标记的变量会在反向传播中记录梯度信息。神经网络训练中,常用该函数标记待训练参数。
tf.Variable(初始值)
w = tf.Variable(tf.random.normal([2, 2], mean=0, stddev=1))
对应元素的四则运算: 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)
## 只有维度相同的张量才可以四则运算
# 切分传入张量的第一维度,生成输入特征/标签对,构建数据集
data = tf.data.Dataset.from_tensor_slices((输入特征, 标签))
# with结构记录计算过程,gradient求出张量梯度
with tf.GradientTape() as tape:
# 若干计算过程
grad = tape.gradient(函数, 对谁求导)
# enumerate是python的内建函数,它可以便利每个元素,组合为:索引 元素
# 常在for循环中使用
enumerate(列表名)
# Example
seq = ["one", "two", "three"]
for i, element in enumerate(seq):
print(i, element)
# 运行结果
0 one
1 two
2 three
# 独热编码:在分类问题中,常用独热编码做标签来标记类别
# 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=float32
# 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前,先用tf.Variable定义变量w为可训练的
w.assign_sub(w要自减的内容)
# 返回张量沿指定维度最大值的索引号
tf.argmax(张量名, axis=索引号)