張量Tensor
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SZxQ2MhFDZkNmMyYmNzUDN3QmY5ITNhFTOlZWOwEWYz8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
tensor是pytorch的一種特殊的資料格式,它表示多元數組概括了所有數學意義和計算機意義上的向量形式。
Rank/shape概念- Rank:表示我們需要多少個索引來通路或引用張量資料結構中包含的元素,即代表次元數
- Shape(size):告訴我們每個軸的長度,即每個軸上有多少個資料
Rank=len(shape) Shape是很重要的東西,因為它包含了rank,size的所有東西,一般隻會用它來分析
dtype建立一個張量的時候必須聲明類型,如果你有多個卡還需要聲明device
# array轉tensor
張量的運算
reshape你可以将一個張量的shape改變成任意形狀,前提隻要它們的乘積相同,-1表示讓Pytorch自動計算最後一個位置。
squeeze去掉所有維數為1的的次元,對不為1的次元沒有影響,不需要指定次元
t
unsqueeze 對資料次元進行擴充。給指定位置加上維數為一的次元,需要指定次元(一定是會
增加一個1次元)
t
concat - 沿着 已存在 的軸連接配接多個tensor,把對應次元X所代表的張量進行合并
- 所有的tensor大小一緻,除了需要連接配接那個次元,tensor不能為空
# dim=1的時候相當于
stack - 增加新的次元連接配接多個tensor
- 會先将 原始資料次元擴充一維(unsqueeze) ,然後再按照次元進行拼接,具體拼接操作同torch.cat類似
t
張量廣播
兩個張量從
尾部的次元開始進行比對,次元尺寸必須滿足以下一個條件方可廣播:
- 或者 相等 ,
- 或者 其中一個張量的次元尺寸為 1 ,
- 或者 其中一個張量不存在這個次元 。
# 示例1:相同形狀的張量總是可廣播的,因為總能滿足以上規則。
張量自身元素運算
max函數就是把指定的Xdim合并為1然後去除,合并元素為最大值,保留其他維不變
t
整理來源
李小偉:torch的廣播機制(broadcast mechanism)zhuanlan.zhihu.com