# 聲明操作符
現在,我們必須了解我們可以添加到 TensorFlow 圖的其他操作。
## 做好準備
除了標準算術運算之外,TensorFlow 還為我們提供了更多我們應該了解的操作以及如何在繼續操作之前使用它們。同樣,我們可以通過運行以下代碼來創建圖會話:
```py
import tensorflow as tf
sess = tf.Session()
```
## 操作步驟
TensorFlow 對張量有標準操作,即`add()`,`sub()`,`mul()`和`div()`。請注意,除非另有說明,否則本節中的所有操作都將按元素評估輸入:
1. TensorFlow 提供了`div()`和相關函數的一些變體。
2. 值得一提的是`div()`返回與輸入相同的類型。這意味著如果輸入是整數,它確實返回了分區的底線(類似于 Python 2)。要返回 Python 3 版本,它在分割之前將整數轉換為浮點數并始終返回浮點數,TensorFlow 提供`truediv()`函數,如下所示:
```py
print(sess.run(tf.div(3, 4)))
0
print(sess.run(tf.truediv(3, 4)))
0.75
```
1. 如果我們有浮點數并想要整數除法,我們可以使用`floordiv()`函數。請注意,這仍然會返回一個浮點數,但它會向下舍入到最接近的整數。這個函數如下:
```py
print(sess.run(tf.floordiv(3.0,4.0)))
0.0
```
1. 另一個重要函數是`mod()`。此函數返回除法后的余數。它如下:
```py
print(sess.run(tf.mod(22.0, 5.0)))
2.0
```
1. 兩個張量之間的交叉積通過`cross()`函數實現。請記住,交叉乘積僅針對兩個三維向量定義,因此它只接受兩個三維張量。以下代碼說明了這種用法:
```py
print(sess.run(tf.cross([1., 0., 0.], [0., 1., 0.])))
[ 0\. 0\. 1.0]
```
1. 這是一個更常見的數學函數的緊湊列表。所有這些函數都以元素方式運行:
| | |
| --- | --- |
| `abs()` | 一個輸入張量的絕對值 |
| `ceil()` | 一個輸入張量的向上取整函數 |
| `cos()` | 一個輸入張量的余弦函數 |
| `exp()` | 基于`e`指數的一個輸入張量 |
| `floor()` | 一個輸入張量的向下取整函數 |
| `inv()` | 一個輸入張量的乘法逆(1 / x) |
| `log()` | 一個輸入張量的自然對數 |
| `maximum()` | 元素最多兩個張量 |
| `minimum()` | 兩個張量的元素分鐘 |
| `neg()` | 負輸入張量為負 |
| `pow()` | 第一個張量元素提升到第二個張量元素 |
| `round()` | 舍入一個輸入張量 |
| `rsqrt()` | 一個超過一個張量的平方根 |
| `sign()` | 返回-1,0 或 1,具體取決于張量的符號 |
| `sin()` | 一個輸入張量的正弦函數 |
| `sqrt()` | 一個輸入張量的平方根 |
| `square()` | 一個輸入張量的平方 |
1. 專業數學函數:有一些特殊的數學函數可以在機器學習中使用,值得一提,TensorFlow 為它們提供了內置函數。同樣,除非另有說明,否則這些函數在元素方面運行:
| | |
| --- | --- |
| `digamma()` | Psi 函數,`lgamma()`函數的導數 |
| `erf()` | 高斯誤差函數,元素方式,一個張量 |
| `erfc()` | 一個張量的互補誤差函數 |
| `igamma()` | 降低正則化的不完全伽瑪函數 |
| `igammac()` | 上正則化不完全伽馬函數 |
| `lbeta()` | β函數絕對值的自然對數 |
| `lgamma()` | 伽瑪函數絕對值的自然對數 |
| `squared_difference()` | 計算兩個張量之間差異的平方 |
## 工作原理
重要的是要知道我們可以使用哪些函數,以便我們可以將它們添加到我們的計算圖中。我們將主要關注前面的函數。我們還可以生成許多不同的自定義函數作為前面的組合,如下所示:
```py
# Tangent function (tan(pi/4)=1)
print(sess.run(tf.tan(3.1416/4.)))
1.0
```
## 更多
如果我們希望向我們未在此處列出的圖添加其他操作,我們必須從前面的函數創建自己的操作。以下是我們之前未使用的操作示例,我們可以將其添加到圖中。我們選擇使用以下代碼添加自定義多項式函數`3x^2 - x + 10`:
```py
def custom_polynomial(value):
return tf.sub(3 * tf.square(value), value) + 10
print(sess.run(custom_polynomial(11)))
362
```
- TensorFlow 入門
- 介紹
- TensorFlow 如何工作
- 聲明變量和張量
- 使用占位符和變量
- 使用矩陣
- 聲明操作符
- 實現激活函數
- 使用數據源
- 其他資源
- TensorFlow 的方式
- 介紹
- 計算圖中的操作
- 對嵌套操作分層
- 使用多個層
- 實現損失函數
- 實現反向傳播
- 使用批量和隨機訓練
- 把所有東西結合在一起
- 評估模型
- 線性回歸
- 介紹
- 使用矩陣逆方法
- 實現分解方法
- 學習 TensorFlow 線性回歸方法
- 理解線性回歸中的損失函數
- 實現 deming 回歸
- 實現套索和嶺回歸
- 實現彈性網絡回歸
- 實現邏輯回歸
- 支持向量機
- 介紹
- 使用線性 SVM
- 簡化為線性回歸
- 在 TensorFlow 中使用內核
- 實現非線性 SVM
- 實現多類 SVM
- 最近鄰方法
- 介紹
- 使用最近鄰
- 使用基于文本的距離
- 使用混合距離函數的計算
- 使用地址匹配的示例
- 使用最近鄰進行圖像識別
- 神經網絡
- 介紹
- 實現操作門
- 使用門和激活函數
- 實現單層神經網絡
- 實現不同的層
- 使用多層神經網絡
- 改進線性模型的預測
- 學習玩井字棋
- 自然語言處理
- 介紹
- 使用詞袋嵌入
- 實現 TF-IDF
- 使用 Skip-Gram 嵌入
- 使用 CBOW 嵌入
- 使用 word2vec 進行預測
- 使用 doc2vec 進行情緒分析
- 卷積神經網絡
- 介紹
- 實現簡單的 CNN
- 實現先進的 CNN
- 重新訓練現有的 CNN 模型
- 應用 StyleNet 和 NeuralStyle 項目
- 實現 DeepDream
- 循環神經網絡
- 介紹
- 為垃圾郵件預測實現 RNN
- 實現 LSTM 模型
- 堆疊多個 LSTM 層
- 創建序列到序列模型
- 訓練 Siamese RNN 相似性度量
- 將 TensorFlow 投入生產
- 介紹
- 實現單元測試
- 使用多個執行程序
- 并行化 TensorFlow
- 將 TensorFlow 投入生產
- 生產環境 TensorFlow 的一個例子
- 使用 TensorFlow 服務
- 更多 TensorFlow
- 介紹
- 可視化 TensorBoard 中的圖
- 使用遺傳算法
- 使用 k 均值聚類
- 求解常微分方程組
- 使用隨機森林
- 使用 TensorFlow 和 Keras