tensorflow2.0中的Broadcasting用法
Broadcasting是tensorflow2.0中一個很重要的用法,張量維度擴張的手段,但是沒有在數據層面上的復制。是一種數據優化的手段。高效且直觀。
Broadcasting的機制
①進行維度的擴展。
②不進行數據的復制,不另外開辟空間。
③本質和tf.tile不一樣。
④tf.broadcast_to
主要過程
1.給需要位置插入一個維度,例如[2,2,3,4]+[3,4]的運算,其中[3,4]這組數據,首先擴展為[1,1,3,4].
2.給dim為1的擴展為所需要的數量。上面那個例子。[3,4]->[1,1,3,4]之后,[1,1,3,4]->[2,2,3,4]
如圖所示:
注意:
①維度是從小到大的,簡言之,是從右往左匹配的。
②需要擴展的dim必須為1,否則就算是成倍數也不可以。[2,3]+[4,3]是運行錯誤的。
優點
①能夠真實的解決需要。
②節省開銷。
幾種可能出現的情況
Solution 1:[1,32,1,1]->[4,32,4,4]
Solution 2:[14,14]->[1,1,14,14]->[4,32,14,14]
Solution 3:[4,32,14,14]+[2,32,14,14]會出現錯誤,理由如下:
樣例
tf.broadcast_to
注意:tf.broadcast_to 是兩個已存在的 tensor 之間的 轉換,而 tf.**_like 初始化創建。
Broadcast VS Tile
優勢:
①Broadcasting與內存無關。
②Broadcasting使用比較簡潔。
總結
以上是生活随笔為你收集整理的tensorflow2.0中的Broadcasting用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于tensorflow2.0利用CNN
- 下一篇: Win10更新后开机变得很慢怎么办 Wi