---
# System prepended metadata

title: 翼剖面進度報告
tags: [深度學習]

---

---
type: slide
---
# 翼剖面進度報告
1. 概要
2. 詳細流程
3. CFD 模擬
4. DNNs 架構
5. 現在進度
6. 未來進度規劃

---

# 1.概要
- 使用 CFD 軟體 OpenFOAM 來模擬翼剖面剪應力的分布
- 並使用 CFD 生成的剪應力分布數據來訓練 DNNs 網路模型
- 預期模型表現能達到一定程度的準確度

---

# 2 流程

----

# 2.1 CFD 資料庫建立

![](https://hackmd.io/_uploads/HJ7V5tNJp.png)

----

- 將翼剖面分成訓練用及測試用
- 由兩種分類的翼剖面生成的 CFD 模擬數據分別作為模型訓練用及測試用

----

# 2.2 Model Training 流程
- 使用資料庫中的資料來訓練模型
- 訓練數據分為 `input` 及 `target`

----

![](https://hackmd.io/_uploads/S10V9KNJa.png)

----

- `input` 包含
    - 訓練用翼剖面上101個座標點
    - 生成該筆剪應力用的自由流速度分量

- `target` 為模擬出翼剖面上剪應力分布

----

# 2.3 Model Testing 流程
- 使用測試集的數據來檢驗模型的表現
    - 翼剖面 ah94156
    - 攻角 -5 0 5 度
    - 下上表面分開
- 使用 `MAPE` 來觀察預測結果與 CFD 數據的誤差

----

![](https://hackmd.io/_uploads/HyqWTFV1T.png)

---

# 3. CFD
- 使用 `OpenFOAM`
    - `postprocess` 使用 `wallshearStress` 來計算表面剪應力
    - 紊流模型使用 k - $\omega$ 模型

----

- 使用 naca0012 模擬出的數據
- 並比對[Turbulent flow over NACA0012 airfoil (2D)](https://www.openfoam.com/documentation/guides/latest/doc/verification-validation-naca0012-airfoil-2d.html) 該網站計算翼剖面 naca0012 在不可壓縮流情況下的數據
- 得到接近的結果來確認使用的 `OpenFOAM case` 模擬出來的數據是可以用的

----

![](https://hackmd.io/_uploads/S1HqZsN16.png)

---

# 4 DNNs

----

# 4.1 Model Training
- 3 層隱藏層
- 1700 筆訓練用資料
![](https://hackmd.io/_uploads/SJ8CrOrba.png)

----

## 超參數設定
- `input shape` 為(m, 103) m 為資料庫中要用來訓練的資料筆數
- `output shape` 為 (m,101)
- `batch_size` : 32
- `learning rate` : 0.00001, `epochs` : 2000

----

- 使用 `validation set` 比例為 `Train 8 : validation 2`
- 優化器 `optimizer` 使用 `SGD` 準確梯度下降法
- 激活函數 `activation` 使用 `ReLU`

----

- 在三層隱藏層的架構下，先使用每層 128 個神經元
- MAPE 的誤差落在 23 % 下上
- 嘗試不同的超參數組合在現在的參數數量條件下模型表現都沒有明顯改進

----

# 4.2 Testing
MAPE 的誤差落在 23 % 下上
![](https://hackmd.io/_uploads/BJHPOwFWa.png)

----

![](https://hackmd.io/_uploads/HJ9DuvYZp.png)

---

# 5 現在進度
- 在三層的架構下增加使用的參數數量及結構
![](https://hackmd.io/_uploads/Hk6PXOF-p.png)

----

## 5.1 問題 - 1
- 在`epochs`約 2000 的情況下可以收斂，但誤差落在 23% 上下
- 誤差會受到離群值的影響
- 在`epochs`約 20000 的情況下，模型的表現能夠再提升 (15%)

----

## 問題 - 2
- 上次的結論是繼續增加資料量
- 但目前測試出來的結果是影響不大

----

## 5.2.1 訓練過程(old)
- `epochs` : 20000
- `learning rate` : 0.004
- `batch_size` : 32
- 1700 筆資料

----

- 參數 : 7 萬
- 三層架構
![](https://hackmd.io/_uploads/H1tDqtnfp.png)

----

## 5.2.2 測試結果(old)
- 透過剔除離群值(outliner)
- 發現預測的數值大部分都與 CFD 數值接近
![](https://hackmd.io/_uploads/B10GiKhf6.png)

----

使用 0 度攻角下的情況做 Demo
![](https://hackmd.io/_uploads/rkyZoFnMa.png)

----

## 5.3 目前的測試結果
- `epochs` : 20000
- `learning rate` : 0.004
- `batch_size` : 128

----

- 固定超參數，增加資料筆數
- 3050 筆資料
![](https://hackmd.io/_uploads/BJAI0Knf6.png)

----

![](https://hackmd.io/_uploads/SJSlk53zT.png)

----

### 問題
資料筆數增加但在 -5 及 5 度攻角情況下誤差變大
![](https://hackmd.io/_uploads/SkFsJqhfT.png)
左圖為新的，右圖為舊的

----

## 5.4 結論
訓練用的資料變多，但模型表現變差
- 可能是訓練用的資料中數據分布不均勻
- 或是模型架構有問題

---

# 6. 進度規劃
- 調整超參數，優化模型
- 檢查資料庫中資料的分布
