TensorFlow2.0學習筆記---broadcasting
阿新 • • 發佈:2020-10-10
之前遇到過一個問題,[email protected] +b 時, [email protected] = [b,10] b.shape = [10] ,兩個shape不一樣的矩陣在數學上是不能相加的,但是為什麼在TensorFlow這裡可以相加呢,?broadcasting就是解決這個問題的。
從這個圖中可以看出來,broadcasting的操作是將兩個shape不同的矩陣進行資料平移複製,從而使他們可以相加。
shape中,靠右的維度是小維度,靠左的維度是大維度。從上面兩個例子可以看出來,broadcasting首先將資料右對齊,也就是小維度先對齊,然後在缺失的維度上先補1個size,再講size為1的維度轉化成可以相加運算的size。
broadcasting並沒有進行資料在儲存上的複製,也就是說,複製的資料是不佔用記憶體的。
上面這個例子是不可以進行broadcasting來相加的,因為未對齊的維度不是size=1
下面是可以broadcasting的
最後我們來回顧一下,[email protected] +b 時, [email protected] = [b,10] b.shape = [10] ,兩個shape不一樣的矩陣在數學上是不能相加的,但是為什麼在TensorFlow這裡可以相加呢?
即:
[b,10] + [10]
[b,10] + [1,10]
[b,10] + [b,10]