ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Tensor moduels
    라이브러리/PyTorch 2022. 3. 7. 14:18

    Tensor moduels

    tensor는 NumPy arrays와 컨셉적으로 유사하다.  tensorsms n-차원 배열로 수학적 함수를 적용하고, GPU를 이용해 계산을 가속화 할 수 있으며, computational graph와 gradients 를 추적하는데 사용 될 수 있다.

     

    PyTorch에서 tneosrs는 연속적인 메모리 덩어리(contiguous chunks of memory)에 저장된 수치 데이터의 1차원 배열에 대한 views로 구현된다. 이런 배열은 stroage instances라 불린다. 모든 PyTorch tensor는 storage 속성을 갖고 있는데, 이를 호출함으로써 기본 storage 인스턴스(the underlying storage instance)를 출력할 수 있다.

    points = torch.tensor([[1., 4.], [2., 1.], [3., 5.]])
    points.storage()
    
    '''
     1.0
     4.0
     2.0
     1.0
     3.0
     5.0
    [torch.FloatStorage of size 6]
    '''

     

    tensor가 storage instace의 view라면, tensor는 view를 구현하기 위해 다음과 같은 정보를 사용한다.

    • Size
    • Storage
    • Offset
    • Stride

     

    Size

    points.size()
    # torch.Size([3, 2])

    Size는 NumPy의 shape 속성과 유사하다. Size는 각 차원별 원소의 수를 알려준다. 각 수를 곱하면 기본 storage instance의 길이가 나온다.

     

    Offset

    points.storage_offset()
    # 0

    offset는 storage 배열내의 tensor의 첫번째 원소의 index를 나타낸다. 위의 결과물이 0인 이유는 tensor의 첫번째 원소는 storage 배열의 첫번째 원소이기 때문이다.

    points[1].storage_offset()
    # 2

    points[1]은 [2., 1.]이며 stroage 배열은 [1., 4., 2. , 1., 3., 5.]이기에 [2., 1.]의 첫번째 원소 즉, 2.는 storage 배열의 2번째에 위치한다.

     

    Stride

    points.stride()
    # (2, 1)

    stride는 각 차원에 대한 tensor의 다음 차원을 접근하기 위해 스킵될 수 있는 원소의 수를 포함한다. 

     

    이러한 모든 속성(attributes)를 사용해, tensors는 연속적인 1차원 storage 배열로 부터 얻어질 수 있다.

    '라이브러리 > PyTorch' 카테고리의 다른 글

    Learning Rate Scheduler  (0) 2022.04.26
    gc.collect, torch.cuda.empty_cache()  (0) 2022.04.25
    torch.utils.data  (0) 2022.03.07
    torch.optim  (0) 2022.03.07
    torch.nn  (0) 2022.03.07

    댓글

Designed by Tistory.