본문 바로가기

AI/파이토치

파이토치 함수들

torch.index_select

   - Parameter : input, dim, index 

   - tensor에서 원하는 인덱스를 가져오고 싶을 때 사용 가능한 함수이다

     인덱스를 추출하고자 하는 tensor 객체를 input에 

     선택하고자하는 차원을 dim값으로  

     그 차원의 몇번째 인덱스인지를 index에 텐서 객체로 주면 된다.

 

ex) A : [[1, 2],     에서 1열 [1, 3]을 추출하고 싶다면 torch.index_select(A, 1, torch.tensor([0])

          [3, 4]]            2행 [3, 4]을 추출하고 싶다면 torch.index_select(A, 0, torch.tensor([1])  

 

 

torch.Tensor.view

  - 원소의 수를 유지하고 텐서의 크기를 바꿔주는 함수이다. 

 

  ex) ex) A : [[1, 2],     에서 A.view([4])는 tensor([[1., 2., 3., 4.]]) 

                 [3, 4]] 

 

 

is_tensor

   - tensor 객체인지 확인 후 True, False를 반환해주는 함수이다. 

 

-Tensors - Creation Ops

 

torch.from_numpy

    -  numpy의 배열을 받아 tensor로 바꿔주는 함수이다.

    -  메모리를 참조하기 때문에 tensor 값을 바꾸면 numpy배열 값도 바뀌게 된다. 

 

torch.zeros

    - 0으로 채워진 tensor를 리턴한다.

   ex) torch.zeros(23)  = tensor([[0., 0., 0.],

                                           [0., 0., 0.]])

 

torch.zeros_like 

  - tensor 객체를 받아 동일한 크기의 0으로 채워진 tensor를 리턴한다.

 

 

torch.chunk

   - 텐서를 덩어리로 나눠주는 함수이다. 공식문서에서는 This function may return less then the specified number of    chunks!라고 적혀있다.

    parameter로 input, chunks, dim=을 받는데 차원을 주어진 chunk 수로 나눠 split 한 tensor를 리턴하는 방식이다. 

    아래 예시는 13개의 요소가 들어있는 tensor를 6으로 chunk 하면 더 적은 개수(5)로 split 되는 것을 확인할 수 있다.

>>> torch.arange(11).chunk(6)
(tensor([0, 1]),
 tensor([2, 3]),
 tensor([4, 5]),
 tensor([6, 7]),
 tensor([8, 9]),
 tensor([10]))
>>> torch.arange(12).chunk(6)
(tensor([0, 1]),
 tensor([2, 3]),
 tensor([4, 5]),
 tensor([6, 7]),
 tensor([8, 9]),
 tensor([10, 11]))
>>> torch.arange(13).chunk(6)
(tensor([0, 1, 2]),
 tensor([3, 4, 5]),
 tensor([6, 7, 8]),
 tensor([ 9, 10, 11]),
 tensor([12]))

 

@@@ torch.Tensor.scatter

 

-random sampling

 

torch.randn

    - 평균이 0이고 표준편차가 1인 가우시안 정규분포를 이용해 생성

 

torch.randqerm

   -주어진 범위 내의 정수를 랜덤 하게 생성

>>> torch.randperm(4)
tensor([2, 1, 0, 3])

 

 

torch.log1p

    - tensor 객체를 인수로 주면 각 요소들에 loge(x+1)식을 씌운다. 

 

torch.rad2 deg

    - tensor의 각 요소를 라디안으로 계산해 각도로 바꿔 리턴한다.

 

torch.clamp

    - min 혹은 max 범위에 해당하도록 tensor의 요소들을 바꿔준다.

 torch.clamp(a, min=-0.5, max=0.5)
tensor([-0.5000,  0.1734, -0.0478, -0.0922])

 

Math operations - Reduction Ops

 

torch.prod

   - 모든 요소를 곱한 값을 리턴한다.

 

torch.count_nonzero

   - 0이 아닌 요소를 카운트해서 리턴한다. dim 인수를 설정하면 각 차원 인덱스마다 카운트해서 리턴한다.

 

torch.argmax

    - 최댓값의 인덱스를 리턴한다. dim 인수를 설정하면 차원 인덱스에서의 최댓값 인덱스들을 반환한다.

 

 

argsort

   -인수 dim을 따라 오름차순으로 정렬된 인덱스 값을 리턴한다.

 

topk

    - parameter로 주어진 n개의 가장 큰 요소들을 리턴한다.

>>> x = torch.arange(1., 6.)
>>> x
tensor([ 1.,  2.,  3.,  4.,  5.])
>>> torch.topk(x, 3)
torch.return_types.topk(values=tensor([5., 4., 3.]), indices=tensor([4, 3, 2]))

 

triu

    - 주 대각선을 제외한 그 아래 값들을 0으로 반환한다.

    - diagonal 인수로 대각선을 제어할 수 있다.

 

einsum

  https://ita9 naiwa.github.io/numeric%20 calculation/2018/11/10/Einsum.html

 

addmm

    - parameter로 input, mat1, mat2을 받고 mat1과 mat2의 행렬곱의 결과를  input에 추가한다.

 

matrix_rank

    -  랭크를 리턴한다.

 

nn.Linear

 

    - 

 

 

 

 

 

'AI > 파이토치' 카테고리의 다른 글

nn.Module  (0) 2022.01.31
torch.Tensor와 torch.tensor 차이  (0) 2022.01.30