관리 메뉴

개발자의 스터디 노트

텐서를 만들어 봅시다. 본문

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

텐서를 만들어 봅시다.

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

텐서를 만들어 봅니다.

 

1. 텐서의 속성을 볼 수 있는 함수를 선언합니다.

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

 

2. 기본적인 텐서 생성

### 기본적인 텐서 생성
import torch
describe(torch.Tensor(2,3))


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

 

3. 랜덤 값을 가진 텐서 생성

### 랜덤 텐서 생성
describe(torch.rand(2,3)) # 균등분포
describe(torch.randn(2,3)) # 표준 정규 분포


타입: torch.FloatTensor
크기: torch.Size([2, 3])
값: 
tensor([[0.8183, 0.9059, 0.9607],
        [0.3799, 0.2001, 0.2302]])
타입: torch.FloatTensor
크기: torch.Size([2, 3])
값: 
tensor([[-0.5862,  0.3827,  0.4590],
        [-0.0519,  0.8532, -0.1195]])

 

4. 특정값으로 텐서 초기화 하기

import torch
# 텐서를 0으로 초기화 생성
describe(torch.zeros(2,3))

# 텐서를 1로 초기화 생성
x = torch.ones(2,3)
describe(x)

#텐서를 특정값으로 초기화 생성
# 특정값 초기화 함수 fill_()
x.fill_(5)
describe(x)


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

 

5. 파이썬 리스트로 텐서를 만들고 초기화 하기

x = torch.Tensor([[1,2,3],[4,5,6]])
describe(x)


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

 

 

6. 넘파이로 텐서를 만들고 초기화 하기

 - Numpy는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리할 수 있도록 지원하는 파이썬의 라이브러리입니다.

 - Numpy는 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공합니다.

import torch
import numpy as np
npy = np.random.rand(2,3)
describe(torch.from_numpy(npy))


타입: torch.DoubleTensor
크기: torch.Size([2, 3])
값: 
tensor([[0.0073, 0.8063, 0.2914],
        [0.0318, 0.5833, 0.4477]], dtype=torch.float64)

 

7. 텐서 속성

x = torch.FloatTensor([[1,2,3],[4,5,6]])
describe(x)


타입: torch.FloatTensor
크기: torch.Size([2, 3])
값: 
tensor([[1., 2., 3.],
        [4., 5., 6.]])
x = x.long()
describe(x)

타입: torch.LongTensor
크기: torch.Size([2, 3])
값: 
tensor([[1, 2, 3],
        [4, 5, 6]])
x = torch.tensor([[1,2,3],[4,5,6]], dtype=torch.int64)
describe(x)


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


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

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

텐서의 인덱싱, 슬라이싱, 연결  (0) 2022.02.08
텐서의 연산  (0) 2022.02.08
샘플과 타깃의 인코딩  (0) 2022.02.08
지도학습이란?  (0) 2022.02.08
파이토치를 설치 해 봅시다.  (0) 2022.02.07