# 對嵌套操作分層
在本文中,我們將學習如何在同一計算圖上放置多個操作。
## 做好準備
了解如何將操作鏈接在一起非常重要。這將在計算圖中設置分層操作。對于演示,我們將占位符乘以兩個矩陣,然后執行加法。我們將以三維 NumPy 數組的形式提供兩個矩陣:
```py
import tensorflow as tf
sess = tf.Session()
```
## 操作步驟
同樣重要的是要注意數據在通過時如何改變形狀。我們將輸入兩個大小為`3` x `5`的 NumPy 數組。我們將每個矩陣乘以一個大小常數`5` x `1,`,這將產生一個大小為`3` x `1`的矩陣。然后我們將其乘以`1` x `1`矩陣,再次產生`3` x `1`矩陣。最后,我們在最后添加`3` x `1`矩陣,如下所示:
1. 首先,我們創建要輸入的數據和相應的占位符:
```py
my_array = np.array([[1., 3., 5., 7., 9.],
[-2., 0., 2., 4., 6.],
[-6., -3., 0., 3., 6.]])
x_vals = np.array([my_array, my_array + 1])
x_data = tf.placeholder(tf.float32, shape=(3, 5))
```
1. 接下來,我們創建將用于矩陣乘法和加法的常量:
```py
m1 = tf.constant([[1.], [0.], [-1.], [2.], [4.]])
m2 = tf.constant([[2.]])
a1 = tf.constant([[10.]])
```
1. 現在,我們聲明操作并將它們添加到圖中:
```py
prod1 = tf.matmul(x_data, m1)
prod2 = tf.matmul(prod1, m2)
add1 = tf.add(prod2, a1)
```
1. 最后,我們通過圖提供數據:
```py
for x_val in x_vals:
print(sess.run(add1, feed_dict={x_data: x_val}))
[[ 102.]
[ 66.]
[ 58.]]
[[ 114.]
[ 78.]
[ 70.]]
```
## 工作原理
我們剛剛創建的計算圖可以使用 TensorBoard 進行可視化。 TensorBoard 是 TensorFlow 的一個功能,它允許我們可視化計算圖和這些圖中的值。與其他機器學習框架不同,這些功能是本機提供的。要了解如何完成此操作,請參閱[第 11 章](../Text/83.html)中的 TensorBoard 秘籍中的可視化圖,更多內容使用 TensorFlow。以下是我們的分層圖如下所示:

圖 2:向上傳播到圖時的數據大小
## 更多
在通過圖運行數據之前,我們必須聲明數據形狀并知道操作的結果形狀。這并非總是如此。可能有一兩個我們事先不知道的維度,或者一些可能變化的維度。為實現此目的,我們將可以改變(或未知)的維度或維度指定為值`None`。例如,要使先前的數據占位符具有未知數量的列,我們將編寫以下行:
```py
x_data = tf.placeholder(tf.float32, shape=(3,None))
```
這允許我們打破矩陣乘法規則,但我們仍然必須遵守乘法常數必須具有相同行數的事實。當我們將數據輸入圖時,我們可以動態生成或重新整形`x_data`。當我們以不同批次大小的多批次提供數據時,這將在后面的章節中派上用場。
> 雖然使用`None`作為尺寸允許我們使用可變尺寸的尺寸,但在填充尺寸時始終建議盡可能明確。如果我們將尺寸標準化為固定尺寸,那么我們應該明確地將該尺寸寫為尺寸。建議將`None`用作維度,以限制數據的批量大小(或我們一次計算的數據點數)。
- 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