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