Numpy,Tensor,Variable値が1の次元を削除

1538 ワード

1.Numpy.array
  • 2-d Array(H,W)に1の値を加えた次元が3-d Array(H,W,1):
  • カラー画像はnumpyに(H,W,C)形状(channel-last)の3-d Arrayで記憶され、階調画像は(H,W)形状の2-d Arrayで記憶され、その値が1の次元を1つ増やして3-d Array(H, W, 1)となることが多い.
    import numpy as np
    
    in:
    a = np.ones((3,3))
    print(a.shape) 
    b1 = np.expand_dims(a,2)
    print(b1.shape)
    
    out:
    (2, 2)
    (2, 2, 1)
    
    note:
    b2 = np.expand_dims(a, 0) # (1, 2, 2)
    b3 = np.expand_dims(a, 1) # (2, 2, 1)
    
  • n-d Array中値が1の次元を削除
  • 画像マトリクスを表示、保存する際には、値1の次元を削除する必要がある場合が多い.
    in:
    a = np.ones((2,2,1))
    print(a.shape)
    b = np.squeeze(a)
    print(b.shape)
    
    out:
    (2, 2, 1)
    (2, 2)
    

    2.torch.Tensor
  • 2-d Tensor(H,W)に値1の次元を1つ増やして3-d Tensor(1,H,W):
  • カラー画像はPytorchに(C,H,W)形状(channel-first)の3-d tensorで記憶され、階調画像は(H,W)形状の2-d tensorで記憶され、その値が1の次元を1つ増やして3-d tensor (H, W, 1)となることが多い.
    in:
    import torch as t
    a = np.ones((2,2))
    a = t.Tensor(a)
    print(a.shape)
    
    b = t.unsqueeze(a, 0)
    print(b.shape)
    
    out:
    torch.Size([2, 2])
    torch.Size([1, 2, 2])
    
  • n-d Array中値が1の次元を削除
  • in:
    import torch as t
    a = np.ones((2,2,1))
    a = t.Tensor(a)
    print(a.shape)
    
    b = t.squeeze(a)
    print(b.shape)
    
    out:
    torch.Size([2, 2, 1])
    torch.Size([2, 2])
    

    3.torch.Variable Pytorchではオートチューニング対応、Tenosrパッケージ化Variable.Variable削除次元で使用される関数はTensorと一致する.