深度學習筆記(5)Broadcasting in Python 廣播
廣播是一種手段,可以讓Python程式碼段執行速度更快,同時會減少你的程式碼量。
引例:現在有4種不同的食物,如圖矩陣種列出每100g食物中碳水化合物、蛋白質、脂肪所提供的熱量值。試問:如何求每種食物中每一種營養物質熱量的佔比?
道理很簡單,其實就是把每一列求和,再分別求出每一個值與該列和的比值。值得思考的是,在這個問題中,我們應該怎麼樣避開for迴圈編寫程式?
import numpy as np
A = np.array([[56.0, 0.0, 4.4, 68.0],
[1.2, 104.0, 52.0, 8.0],
[1.8, 135.0, 99.0, 0.9]])
print(A)
cal = A.sum(axis = 0) # 縱向求和 axis=1橫向求和
percentage = 100*A/(cal.reshape(1,4)) # reshape確保形狀是想要的
print(cal)
print(percentage)
舉三個簡單的例子來說明Python廣播手段的實現效果。
[ 1 2 3 ] + 100 = [ 1 2 3 ] + [ 100 100 100 ] = [ 101 102 103 ] . \left[ \begin{matrix} 1\\2\\3\end{matrix} \right]+100=\left[ \begin{matrix} 1\\2\\3\end{matrix} \right]+\left[ \begin{matrix} 100\\100\\100\end{matrix} \right]=\left[ \begin{matrix} 101\\102\\103\end{matrix} \right]. ⎣⎡123⎦⎤+100=⎣⎡123⎦⎤+⎣⎡100100100⎦⎤=⎣⎡101102103⎦⎤.
[ 1 2 3 4 5 6 ] + [ 100 200 300 ] = [ 1 2 3 4 5 6 ] + [ 100 200 300 100 200 300 ] = [ 101 202 303 104 205 306 ] . \left[ \begin{matrix} 1&2&3\\4&5&6\end{matrix} \right]+\left[ \begin{matrix} 100&200&300\end{matrix} \right]=\left[ \begin{matrix} 1&2&3\\4&5&6\end{matrix} \right]+\left[ \begin{matrix} 100&200&300\\100&200&300\end{matrix} \right]=\left[ \begin{matrix} 101&202&303\\104&205&306\end{matrix} \right]. [142536]+[100200300]=[142536]+[100100200200300300]=[101104202205303306].
[ 1 2 3 4 5 6 ] + [ 100 200 ] = [ 1 2 3 4 5 6 ] + [ 100 100 100 200 200 200 ] = [ 101 102 103 204 205 206 ] \left[ \begin{matrix} 1&2&3\\4&5&6\end{matrix} \right]+\left[ \begin{matrix} 100\\200\end{matrix} \right]=\left[ \begin{matrix} 1&2&3\\4&5&6\end{matrix} \right]+\left[ \begin{matrix} 100&100&100\\200&200&200\end{matrix} \right]=\left[ \begin{matrix} 101&102&103\\204&205&206\end{matrix} \right] [142536]+[100200]=[142536]+[100200100200100200]=[101204102205103206]
簡而言之,維度較低(不管行還是列維度)的矩陣需要橫向/縱向複製,達到維度更高的矩陣形態。
相關文章
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- 深度學習 筆記一深度學習筆記
- 深度學習keras筆記深度學習Keras筆記
- 深度學習框架Pytorch學習筆記深度學習框架PyTorch筆記
- python 學習筆記5 2018-4-10Python筆記
- 深度學習 DEEP LEARNING 學習筆記(一)深度學習筆記
- 深度學習 DEEP LEARNING 學習筆記(二)深度學習筆記
- Python學習筆記Python筆記
- 【學習筆記】python筆記Python
- Python學習筆記5——一切皆物件Python筆記物件
- Vue學習筆記5Vue筆記
- 深度學習——loss函式的學習筆記深度學習函式筆記
- 【深度學習筆記】Batch Normalization (BN)深度學習筆記BATORM
- 【深度學習】大牛的《深度學習》筆記,Deep Learning速成教程深度學習筆記
- python學習筆記(1Python筆記
- Python學習筆記 - queuePython筆記
- Effective Python學習筆記Python筆記
- python——Matplotlib學習筆記Python筆記
- python學習筆記4Python筆記
- Python學習筆記 - asyncioPython筆記
- Python 學習筆記(一)Python筆記
- Python學習筆記 - aiohttpPython筆記AIHTTP
- python學習筆記(二)Python筆記
- Python學習筆記(2)Python筆記
- python——numpy學習筆記Python筆記
- Python學習筆記(三)Python筆記
- python學習記錄5Python
- 學習筆記:深度學習中的正則化筆記深度學習
- 強化學習-學習筆記5 | AlphaGo強化學習筆記Go
- Python學習筆記|Python之程式Python筆記
- spring-5學習筆記Spring筆記
- HTML5學習筆記HTML筆記
- [學習筆記 #5] 雜湊筆記
- 李巨集毅深度學習 筆記(四)深度學習筆記
- Netty 框架學習 —— UDP 廣播Netty框架UDP
- Python深度學習(使用 Keras 回撥函式和 TensorBoard 來檢查並監控深度學習模型)--學習筆記(十六)Python深度學習Keras函式ORB模型筆記
- 讀書筆記(四):深度學習基於Keras的Python實踐筆記深度學習KerasPython
- Python學習筆記—程式碼Python筆記