深度學習學習心得 第三篇 === ![grade](https://img.shields.io/badge/Grade-新手-brightgreen) ![build](https://img.shields.io/badge/Build-keras-important) --- ## 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補充資料 --- ![](https://i.imgur.com/U7PU9JX.png) [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}]"}
    678 views