pytorch 拓展cuda語言 多維索引問題

2021-09-05 10:35:48 字數 488 閱讀 7873

四維矩陣索引公式: 四維矩陣[n, c, h, w], 當前四維索引為 n, c, h, w,   out_idx = n*c*h*w + c*h*w + h*w + w

pytorch中的 .permute()

a = torch.randn(5, 3, 4)    # a的size為[5, 3, 4]

b = a.permute(0, 2, 1) # 此時b的size會變成[5, 4, 3],但是對於b的索引軸的順序沒有變,對應的指標順序還是[5, 3, 4]

b = b.contiguous() # 此時索引軸的順序變為permute()操作之後的,對應的指標順序也為[5, 4, 3]

在pytorch中需要底層處理時,會寫cuda**,其中大多數操作為指標,使用指標計算索引時可以參考上面的公式,為了計算方便,會在底層處理前對要處理的tensor進行維度轉換,為了索引正確,務必在.permute()後使用.contiguous()。

PyTorch儲存和載入模型CUDA

在儲存了使用cuda訓練的模型後,載入時也一定得保持一致,換句話說,在定義網路的時候需要用 net.to device 而且在測試的時候也需要把輸入和標籤統統轉移到cuda上面,即 inputs,labels inputs.to device labels.to device 如果你希望載入使用cu...

Pytorch1 4 0 cuda9 2離線安裝

由於訓練機無法聯網,考慮離線安裝pytorch 一 確保已安裝cuda和cudnn 這裡我安裝的是cuda9.2 cudnn7.6.5 二 安裝pytorch1.4 pytorch的安裝一般來說是使用conda或者pip來安裝,我選擇使用pip來離線安裝,將pytorch安裝在python2.7中。...

C語言拓展筆記

一維陣列 陣列 陣列是一組有序資料的集合,陣列中每乙個元素的型別相同,用陣列名和下標來唯一確定陣列中的元素。一維陣列的定義 型別說明符 陣列名 下標常量表示式 二維陣列 二維陣列的定義 型別說明符 陣列名 常量表示式 常量表示式 函式 1 無參函式 定義格式 資料型別 函式名 現代風格是 函式名 v...