Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- sql정리
- 딥러닝
- AWS builders
- 토스
- 유데미코리아
- 유데미부트캠프
- 특성중요도
- 추천시스템
- 그로스해킹
- NLU
- 서비스기획
- 서비스기획부트캠프
- 취업부트캠프 5기
- SLASH22
- SQL
- 스타터스부트캠프
- 알고리즘
- AARRR
- 스타터스
- MatchSum
- NLP
- 그래프
- 임베딩
- BERT
- 부트캠프후기
- 취업부트캠프
- pytorch
- 사이드프로젝트
- 데이터도서
- 유데미큐레이션
Archives
- Today
- Total
다시 이음
Pytorch - 기초 구조 본문
안녕하세요.
오늘은 Pytorch를 이해하기 위해 기초인 텐서와 구조에 대해 알아보려고 합니다.
텐서 변환
- 리스트 >> 텐서
- numpy.array >> 텐서
x = [[1],[2]]
print(f"x data type: {type(x)}")
#리스트 >> 텐서
x_tensor = torch.tensor(x)
print(f"x_tensor data type: {type(x_tensor)}")
#array 생성
x_np = np.array(x)
print(f"x_np data type: {type(x_np)}")
#array >> 텐서
x_tensor = torch.from_numpy(x_np)
print(f"x_tensor data type: {type(x_tensor)}")
텐서 생성(0,1,난수)
- 0,1로 이루어진 랜덤 배열 텐서 생성
- [0,1] 범위의 균등 분포에서 랜덤 추출 생성
- 정규분포에서 랜덤 추출 생성
- 설정 범위의 int 값을 랜덤 추출 생성
# shape -> tensor
shape = (2,3,)
zero_tensor = torch.zeros(shape)
print(f"zero tensor: {zero_tensor}, shape: {(zero_tensor.shape)}")
one_tensor = torch.ones(shape)
print(f"one tensor: {one_tensor}, shape: {(one_tensor.shape)}")
rand_tensor = torch.rand(shape) # [0,1) 범위의 균등 분포에서 임의의 값 추출
print(f"random tensor: {rand_tensor}, shape: {(rand_tensor.shape)}")
rand_dis_tensor = torch.randn(shape) # 정규분포에서 임의 값 추출
print(f"random distribution tensor: {rand_dis_tensor}, shape: {(rand_dis_tensor.shape)}")
rand_int_tensor = torch.randint(10, shape) # [low,high) 범위의 int 값을 임의 추출
print(f"random int tensor: {rand_int_tensor}, shape: {(rand_int_tensor.shape)}")
텐서 구조
- rank
- dimension 개수
- shape
- 각 dimension의 value 개수
- axis
- 특정 dimension 지칭
텐서 구조 변경
- Shape 변경
view 메소드를 사용하여 -1로 설정한 부분의 axis를 임의로 변경할 수 있도록 허용합니다.
# shape 변경
x = torch.rand(4,3,2)
print(x.view(-1,2,2).shape)
xx = x.view(4,6,-1)
xx.shape
#output
torch.Size([6, 2, 2])
torch.Size([4, 6, 1])
- Rank 변경
# rank 변경
xx.shape = torch.Size([4, 6, 1])
xxx = xx.squeeze()
print(xxx.shape)
print(xxx.unsqueeze(dim=-1).shape)
#output
torch.Size([4, 6])
torch.Size([4, 6, 1])
텐서 인덱싱
파이썬에서 list 인덱싱과 흡사합니다.
텐서 연산
- 덧셈
sum 함수를 사용하여 아래와 같은 형식으로 사용합니다.
x.sum(dim=0, keepdim=True)
*dim = 설정한 axis를 기준으로 덧셈을 합니다.
- 곱셈
- matmul : 일반적인 행렬의 곱으로 행렬의 사이즈가 일치하여야 곱셈이 가능합니다. ex. 2x1 * 1x2
- mul : 같은 위치에 있는 수끼리 곱하는 것으로 Transpose하면 matmul과 같습니다.
- 내적(dot)
1d vector의 곱 연산의 합 -> output: scalar
'Pre_Onboarding by Wanted(자연어 처리)' 카테고리의 다른 글
Pytorch 모델 생성 및 layer 설정 (0) | 2022.03.02 |
---|---|
BERT 모델 임베딩 이해하기 (0) | 2022.03.01 |
Week1-4. 리뷰 긍정부정 판별 모델 설정 프로세스 (0) | 2022.02.24 |
Week 1-3. NLG 과제 (4) | 2022.02.23 |
NLG 란? (0) | 2022.02.23 |