深度學習筆記(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]
簡而言之,維度較低(不管行還是列維度)的矩陣需要橫向/縱向複製,達到維度更高的矩陣形態。
相關文章
- 深度學習keras筆記深度學習Keras筆記
- 深度學習 筆記一深度學習筆記
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- 深度學習框架Pytorch學習筆記深度學習框架PyTorch筆記
- Netty 框架學習 —— UDP 廣播Netty框架UDP
- 深度學習 DEEP LEARNING 學習筆記(一)深度學習筆記
- 深度學習 DEEP LEARNING 學習筆記(二)深度學習筆記
- 深度學習——loss函式的學習筆記深度學習函式筆記
- Vue學習筆記5Vue筆記
- git學習筆記5Git筆記
- CCNA學習筆記5筆記
- 【深度學習筆記】Batch Normalization (BN)深度學習筆記BATORM
- [原始碼解析] 深度學習分散式訓練框架 horovod (15) --- 廣播 & 通知原始碼深度學習分散式框架
- bootstrap 學習筆記 輪播(Carousel)外掛boot筆記
- 【學習筆記】python筆記Python
- Python學習筆記Python筆記
- 學習筆記:深度學習中的正則化筆記深度學習
- Deep Learning(深度學習)學習筆記整理系列深度學習筆記
- 深度學習(二十九)Batch Normalization 學習筆記深度學習BATORM筆記
- Python學習筆記5——一切皆物件Python筆記物件
- [轉載]《吳恩達深度學習核心筆記》釋出,黃海廣博士整理!吳恩達深度學習筆記
- Python學習筆記(隨筆)Python筆記
- 強化學習-學習筆記5 | AlphaGo強化學習筆記Go
- 【深度學習】大牛的《深度學習》筆記,Deep Learning速成教程深度學習筆記
- 點對點通道與廣播通道和乙太網的關係梳理(學習筆記)筆記
- HTML5學習筆記HTML筆記
- Android學習筆記(5)Android筆記
- PL/SQL學習筆記-5SQL筆記
- ruby字串學習筆記5字串筆記
- 李巨集毅深度學習 筆記(四)深度學習筆記
- Andrew ng 深度學習課程筆記深度學習筆記
- 深度學習讀書筆記之RBM深度學習筆記
- 深度學習與神經網路學習筆記一深度學習神經網路筆記
- Laravel 6.x 公共廣播訊息筆記Laravel筆記
- python學習記錄5Python
- python學習筆記4Python筆記
- python學習筆記(二)Python筆記
- Python學習筆記 - aiohttpPython筆記AIHTTP