深度學習學習心得
第三篇
===


---
## Introducing
## Tensorflow
1. Tensorflow is a 微分器
2. Tf 可以做deep learning 以外的東西
3. Keras is the interface of Tensorflow
4. Keras is more easy
:::info
Tensorflow is more flexible
and more complicated
:::
----
Tensorflow補充資料
---

[tensorflow中文說明](https://wiki.jikexueyuan.com/project/tensorflow-zh/)
---
Batch
---
1. 輸入資料有n筆,實作上不會一次跑完全部
2. 會隨機挑選m組資料來進行total loss計算
ex .10000筆資料一次算10筆
3. m組資料是一個batch,算完後換到下個batch
:::warning
但是如果n不能整除m呢?
ex .10000筆資料 batch size = 9 筆
:::
----
Batch isn't modified
---
**解決方法**
1. 更改*batch size*到可以整除的數字
2. 捨棄無法整除的部分資料
10000/9...1 -> 10000/10:heavy_check_mark:
3. 增加訓練資料到可以整除
----
epoch
---
1. 每run 完一次 batch 就會更新一次參數
2. 所有batch都run完稱為一個*epoch*
3. n 個batch / m 個epoch : *n x m次參數更新*
:::danger
如果batch size = 1 就是
Stochastic gradient descent aka SGD
好處是速度快,但是實際上不可行
:::
[SGD隨機梯度下降法](https://medium.com/@chih.sheng.huang821/機器學習-基礎數學-三-梯度最佳解相關算法-gradient-descent-optimization-algorithms-b61ed1478bd7)
---
Batch size 影響
---
1. **越小的batch = epoch會更新越多次參數**
10000筆資料:
batch size = 1 -> 10000 updates
batch size = 10 -> 1000 updates
2. Batch也不能設的太大:GPU會無法平行運算
3. 就算不用GPU,太大的Batch會有下列問題
saddle point (鞍點)& local minimum
[梯度下降法:鞍點](https://medium.com/ai反斗城/learning-model-gradient-descent-介紹與數學原理-轉錄-53ed205a289e)
----
Why mini-batch not SGD
---
**關鍵在GPU做平行運算的時間**
:::info
SGD: *z1 = w1 x [x1]*
MINI-BATCH: *w1 x [x1 x2 …xn]*
上面兩者運算時間一樣:SGD只能算一次 :-1:
:::
---
## Next Lesson ...
1. Example code
2. Code explaination
>
###### tags: `Deep learning` `beginner` `python` `keras` `tutorial`
{"metaMigratedAt":"2023-06-15T05:42:35.376Z","metaMigratedFrom":"YAML","title":"深度學習學習心得-3","breaks":true,"disqus":"hackmd","contributors":"[{\"id\":\"6bb13895-9bc1-441a-8b8f-cc9578e3b5bc\",\"add\":4748,\"del\":2982}]"}