Pytorch Merge操作
生活随笔
收集整理的這篇文章主要介紹了
Pytorch Merge操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡述
Pytorch中沒有內置Merge操作,需要手動實現。
下面會以多個四維的Tensor直接的Merge操作來展示。(len, *image_shape(占三維))
比如上面,這樣的圖片。
每一行都是一個數據X_i(包含三張黑白圖)。
所以,如果是直接用torch.cat([x0, x1, x2])的話,就是直接把這九張圖按照順序排列了下。
圖片對應的編號順序:
1, 2, 3, 4, 5, 6, 7, 8, 9但是如果有時候,需要把這個大圖進行一個 轉置 , 就需要用到了Merge的操作。
將(x1, x2, x3),三個變量merge操作。之后,就是
[x1[0], x2[0], x3[0], ..., x1[n], x2[n], x3[n]]這樣再輸出的話,就是在大圖上做了轉置的效果。
因此需要做Merge。
Merge實現
先給范式:x1,x2,...xn的相互merge
torch.stack([x1,x2,..,xn]).transpose(1, 0).contiguous().view(len(x1+x2+..+xn), *x.shape[1:])簡單來說,就是
給個范例的輸出:
再給個實例上的代碼區別的部分:
圖一
plt.imshow(np.transpose(vutils.make_grid(torch.cat([G_x.cpu().detach(), x.cpu().detach(), y.cpu().detach()]), nrow=3, padding=0,normalize=True, scale_each=True), (1, 2, 0)), cmap='gray')圖二(轉置后)
plt.imshow(np.transpose(vutils.make_grid(torch.stack([G_x.cpu().detach(), x.cpu().detach(), y.cpu().detach()]).transpose(1, 0).contiguous().view(BATCH_SIZE * 3, 1, 96, 96), nrow=3, padding=0,normalize=True, scale_each=True), (1, 2, 0)), cmap='gray')總結
以上是生活随笔為你收集整理的Pytorch Merge操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多个Series合并成Dataframe
- 下一篇: Pytorch预训练模型下载并加载(以V