# 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來進行自更新,也就是自減。

這里需要注意的是,維度還是需要保持一致。因為是對應的元素的自更新。
當然,還有自增,這里不再介紹。
## 13. tf.argmax
返回指定操作軸的最大值得索引號。
