관리 메뉴

개발자의 스터디 노트

텐서의 연산 본문

파이썬/파이토치 자연어처리

텐서의 연산

박개발씨 2022. 2. 8. 22:56

1. 헬퍼 함수 describe(x)를 정의합니다.

## 헬퍼함수 describe(x)를 정의
def describe(x):
    print("타입: {}".format(x.type()))
    print("크기: {}".format(x.shape))
    print("값: \n{}".format(x))

 

2. 2행 3열의 랜던 텐서 생성

import torch
x = torch.randn(2,3)
describe(x)

타입: torch.FloatTensor
크기: torch.Size([2, 3])
값: 
tensor([[ 0.5902,  0.9407,  0.3684],
        [-2.2278, -1.0045, -0.2298]])

 

3. 텐서 x를 더해봅시다.

# add함수를 이용하여 텐서 더하기
describe(torch.add(x,x))

타입: torch.FloatTensor
크기: torch.Size([2, 3])
값: 
tensor([[ 1.1804,  1.8813,  0.7368],
        [-4.4556, -2.0090, -0.4596]])
# +기호를 이용하여 텐서 더하기
describe(x+x)

타입: torch.FloatTensor
크기: torch.Size([2, 3])
값: 
tensor([[ 1.1804,  1.8813,  0.7368],
        [-4.4556, -2.0090, -0.4596]])

 

4. 차원별 텐서 연산

4.1 arange() 함수는 0에서부터 지정한 수 전까지 1씩 증가하는 텐서를 만드는 함수입니다.

import torch
x = torch.arange(6)
describe(x)

타입: torch.LongTensor
크기: torch.Size([6])
값: 
tensor([0, 1, 2, 3, 4, 5])

 

4.2 view() 함수는 동일한 데이터를 공유하는 새로운 텐서를 만듭니다.

x = x.view(2,3)
describe(x)

타입: torch.LongTensor
크기: torch.Size([2, 3])
값: 
tensor([[0, 1, 2],
        [3, 4, 5]])

 

4.3 torch.sum()

describe(torch.sum(x, dim=0))

타입: torch.LongTensor
크기: torch.Size([3])
값: 
tensor([3, 5, 7])


describe(torch.sum(x, dim=1))

타입: torch.LongTensor
크기: torch.Size([2])
값: 
tensor([ 3, 12])

https://velog.io/@reversesky/torch.sum%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

 

torch.sum()에 대한 정리

torch.sum()을 사용하는데, 2차원을 넘어가면 계속해서 헷갈리다가, 어렵게 이해를 했다. 이해한 것을 토대로 정리해보려고 한다.사용법 자체는 numpy의 numpy.sum()과 다르지 않다. a가 밑처럼 생긴 4x4

velog.io

 

4.4 torch.transpose()

describe(torch.transpose(x,0,1))

타입: torch.LongTensor
크기: torch.Size([3, 2])
값: 
tensor([[0, 3],
        [1, 4],
        [2, 5]])

https://runebook.dev/ko/docs/pytorch/generated/torch.transpose

 

PyTorch - torch.transpose - Returns a tensor that is a transposed version of input . The given dimensions di - 한국어

 

runebook.dev

 

'파이썬 > 파이토치 자연어처리' 카테고리의 다른 글

신경망의 기본 구성 요소  (0) 2022.02.10
텐서의 인덱싱, 슬라이싱, 연결  (0) 2022.02.08
텐서를 만들어 봅시다.  (0) 2022.02.08
샘플과 타깃의 인코딩  (0) 2022.02.08
지도학습이란?  (0) 2022.02.08