--- tags: PyTorch, Python --- # Pytorch 常用 ### 1. 转换形态 ```python! torch.tensor([[1, 1, 1], [-1, -1, -1]], dtype=torch.int8) temp = torch.tensor(np.array([[1, 2, 3], [4, 5, 6]])) print(temp[0][0].item()) torch.zeros([1, 3], dtype=torch.int32) cuda = torch.device('cuda:0') torch.ones([2, 2], dtype=torch.float32, device=cuda) temp = torch.tensor([[1, 1, 1], [-1, -1, -1]], dtype=torch.float32, requires_grad=True) print(temp) t = temp.pow(3).sum() print(t) t.backward() print(temp.grad) ``` ### 2. 复制到 c 的 Tensor ```python! a = torch.arange(1, 21) print(a.view(-1, 5)) b = a.reshape(2, 10) c = torch.empty(2, 10) torch.add(b, torch.ones(2, 10), out=c) ``` ### 3. 切换 device ```python! device = torch.device('cuda:0') a = torch.tensor([1, 2, 3, 4]) a.to(device) ``` ### 4. 合併多個圖片並且顯示 ```python! imgs = torch.Tensor(train_data.data[:3]).int().permute(0, 3, 1, 2) imgs = torchvision.utils.make_grid(imgs).permute(1, 2, 0) plt.imshow(imgs) ``` :::info * 輸入到`torchvision.utils.make_grid(imgs)`時,要是`NCHW`型態 * 輸入到`plt.show(imgs)`時,要是`HWC`型態 ::: ### 5. 轉換維度順序 ```python! arr = torch.zeros(3, 4, 5).permute(2, 0, 1) ''' 創建時 shape=(3, 4, 5) 後來改為 shape=(5, 3, 4) ''' ``` ### 6. 轉換為 long 型態 ```python! torch.Tensor(arr).type(torch.LongTensor) ```