# 1. 强制将tensor转换数据类型
使用:
```
tf.cast(张量名, dtype=数据类型)
```
# 2. 计算张量在维度上的最小、大值
使用:
```
tf.reduce_min(张量名)
tf.reduce_max(张量名)
```
在二维张量中,可以通过调整axis来控制执行维度,其中axis=0表示第一个维度,也就是列。而axis=1表示行。
# 3. 求平均值
使用:
```
tf.reduce_mean(张量名, axis=操作轴)
```
如果不指定axis就表示整个张量。比如可以指定axis用来求解指定维度的平均值:
```
tf.reduce_mean(a, axis=0)
```
就表示从列方向上求平均值。
# 3. 求和
```
tf.reduce_sum(张量名, axis=操作轴)
```
# 4. 表示函数为可训练
使用:
```
tf.Variable(初始值)
```
被标记为可训练的变量会在反向传播中记录梯度信息,在神经网络中,使用该函数用来标记待训练参数。比如:
```
tf.Variable(tf.random.normal([2, 2], mean=0, stddev=1))
```
# 5. Tensor的四则运算
按照顺序如下:
```
tf.add(张量1, 张量2)
tf.subtract(张量1, 张量2)
tf.multiply(张量1, 张量2)
tf.divide(张量1, 张量2)
```
需要注意的是,只有维度相同的张量才能做四则运算。也就是说这里的四则运算其实是对应的元素的四则运算。
# 6. 平方、开方和次方
依次对应:
```
tf.square(张量名)
tf.sqrt(张量名)
tf.pow(张量名,n次方)
```
对应的还是对应每个位置的元素进行对应的平方、开方或者次方。
# 7. 矩阵乘法
```
tf.matmul(矩阵1,矩阵2)
```
注意到矩阵乘法这里有mat,可以理解为matrix。不要和前面的张量的四则运算高混淆。
# 8. 输入特征和标签配对
在神经网络中的输入为输入特征和标签对,这里提供了对应的函数来进行封装。
```
tf.data.Dataset.from_tensor_slices((输入特征, 标签))
```
该函数,对应numpy或者Tensor格式的均可。比如:
```
features = tf.constant([1, 2, 3])
labels = tf.constant([0, 1, 0])
dataset = tf.data.Dataset_from_tensor_slices((feactures, labels))
```
# 9. tf.GradientTape
在with结构中,可以使用tf.GradientTape()来实现函数对某个参数的求导运算,比如:
```
with tf.GradientTape() as tape:
# 计算过程
grad = tape.gradient(函数, 对谁求导)
```
这里可以举一个案例:
```
with tf.GradientTape() as tape:
# 定义可训练参数
w = tf.Variable(tf.constant(3.0))
# 定义目标函数
fun = tf.pow(w, 2)
# 求对w的导数
grad = tape.gradient(fun, w)
grad
```
结果:
```
<tf.Tensor: shape=(), dtype=float32, numpy=6.0>
```
因为这里目标函数是w^2,求导为2w,带入初始化为3,故而值为6。
# 10. tf.one_hot
我们知道在神经网络的输入部分,都需要数字化的表示,才可以进行计算。所以在分类问题中,通常使用独热码的形式将数据进行输入。在tenforflow中提供了直接将数据变为独热码的方式,也就是tf.one_hot:
```
# 比如数据的标签为1,2,3,4,我们需要将其变为独热码
labels = tf.constant([1,2, 3, 4])
outputs = tf.one_hot(labels, 4) # 这里为4类
outputs
```
结果:
```
<tf.Tensor: shape=(4, 4), dtype=float32, numpy=
array([[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.],
[0., 0., 0., 0.]], dtype=float32)>
```
# 11. softmax
使用tf.nn.softmax来计算概率,也就是累积和然后求比例,然后找到最大的那个softmax值对应的下标,表示其对应的类别。
```
# 使用softmax函数
wa = tf.constant([1, 2, 3, 4], dtype=tf.float32) # 注意这里只能为float类型
p = tf.nn.softmax(wa)
p
```
结果:
~~~
<tf.Tensor: shape=(4,), dtype=float32, numpy=array([0.0320586 , 0.08714432, 0.23688284, 0.6439143 ], dtype=float32)>
~~~
## 12. assign_sub
可训练参数可以使用assign_sub来进行自更新,也就是自减。
![](https://img.kancloud.cn/9b/ac/9bace58b4c9bacd08f91d4e7e7b848b7_704x193.png)
这里需要注意的是,维度还是需要保持一致。因为是对应的元素的自更新。
当然,还有自增,这里不再介绍。
## 13. tf.argmax
返回指定操作轴的最大值得索引号。
![](https://img.kancloud.cn/17/a2/17a2c45144d992390dfe19c18642024e_637x221.png)