일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Aimers
- pytorch
- 네이버부스트캠프
- 11727번
- object detection
- 스케치이미지
- 회귀모델
- 머신러닝 사이클
- 부스트캠프
- 9095번
- 객체탐지
- 네이버부스트 캠프
- Diffusion
- zero-shot classification
- 다국어 ocr
- 네부캠
- 재활용 품목분류
- imageclassification
- 타일링2
- 이미지분류
- 학습장
- 모델평가지표
- 일기장
- 백준
- 영수증 ocr
- 네이버 부스트캠프
- 1149번
- dp
- 쓰레기분류
- 스케치데이터셋
- Today
- Total
john8538 님의 블로그
네부캠 AI tech 2일차 학습정리(Pytorch의 Tensor) 본문
강의
Pytorch 3강 & 4강 수강
파이토치에서의 Tensor를 생성하고 다루는 방법의 기초에 대해 수강하였다.
강의 내용과 실습내용을 전부 타이핑해보며 손에 익히는 시간을 지녔으며, 추가로 궁금한 부분에 있어 따로 블로깅 하였다.
간단하게 요약해보자
3강
# 특정 값으로 초기화된 텐서 생성
- torch.zeros() : 0으로 초기화
- torch.ones(): 1로 초기화
# 난수로 값으로 초기화된 텐서 생성
- torch.rand(): [0, 1] 구간의 연속균등분포 난수
- torch.randn(): 표준정규분포 난수
# 특정 값으로 초기화된 텐서 변환
- torch.zeros_like(): 크기와 자료형이 같은 0으로 초기화된 텐서로 변환
- torch.ones_like(): 크기와 자료형이 같은 1로 초기화된 텐서로 변환
# 난수로 초기화된 텐서로 변환
- torch.rand_like(): 크기와 자료형이 같은 [0,1] 구간의 연속균등분포 난수 텐서로 변환
- torch.randn_like(): 크기와 자료형이 같은 표준정규분포 난수 텐서로 변환
# 지정된 범위 내에서 초기화된 텐서 생성
- torch.arange(start,end,step) : 매개변수를 생략해도됨
# 초기화되지 않은 텐서 생성
- torch.empty()
# 초기화되지 않은 텐서 수정
- fill_(): 초기화되지 않은 텐서에 특정 값을 채우는 방법
# CPU , GPU 에서의 텐서 활용
https://john8538.tistory.com/8 조금더 자세하게 블로깅을 진행했으므로 참고해주세용!!
4강
PyTorch Tensor 조작의 기초: 모양 변경과 인덱싱
PyTorch는 딥러닝을 위한 강력한 라이브러리이며, 그 핵심에는 Tensor가 있습니다. Tensor를 효과적으로 다루는 것은 PyTorch를 마스터하는 첫 걸음입니다. 이번 포스트에서는 Tensor의 기본적인 조작 방법에 대해 알아보겠습니다.
1. Tensor의 인덱싱과 슬라이싱
Temsor의 특정 요소에 접근할 수 있으며 일부를 추출하여 데이터 처리를 진행할 수 있습니다. 예제 코드는 아래와 같습니다.
a = torch.tensor([10, 20, 30, 40, 50, 60])
print(a[0]) # 출력: tensor(10)
print(a[1:4]) # 출력: tensor([20, 30, 40])
1차원 Tensor 에서 다차원 Tensor까지 각각 선언하고 슬라이싱을 진행할 수 있습니다.
2. Tensor의 모양 변경
2-1. view(): Tensor의 모양을 변경할 수 있는 가장 기본적인 방법 (메모리가 연속적이여야 한다!!)
b = torch.arange(12)
c = b.view(4, 3)
print(b)
print(c)
# 출력:
# tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
# 출력:
# tensor([[ 0, 1, 2],
# [ 3, 4, 5],
# [ 6, 7, 8],
# [ 9, 10, 11]])
2-2. flatten(): Tensor를 1차원으로 평탄화합니다.
d = torch.randn(3, 3)
e = torch.flatten(d)
print(d) # 표준 정규분포로 생성된 3x3 출력
print(e) # 1차원 Tensor 출력
# 출력
# tensor([[ 0.2708, 0.0705, -0.6536],
# [ 0.9966, -1.2883, -0.6392],
# [ 1.3762, -0.9550, -0.5688]])
# tensor([ 0.2708, 0.0705, -0.6536, 0.9966, -1.2883, -0.6392, 1.3762, -0.9550,
# -0.5688])
2-3. reshape(): view()와 유사하나 메모리가 연속성과 관계없이 사용할 수 있다.
f = torch.tensor([0,4,55,2,2,3])
g = f.reshape(3, 2)
print(f)
print(g)
# 출력:
# tensor([ 0, 4, 55, 2, 2, 3])
#
# tensor([[ 0, 4],
# [55, 2],
# [ 2, 3]])
3. Tensor의 차원조작
3-1. transpose(): Tensor의 모양을 전치로 변경한다. 선형대수에서 배웠던 전치행렬과 동일한 메소드다. 텐서의 행과 열을 변경한다.
h = torch.tensor([[0, 1, 2], [3, 4, 5]])
i = h.transpose(0, 1)
print(h)
print(i)
# 출력:
# tensor([[0, 1, 2],
# [3, 4, 5]])
#
# tensor([[0, 3],
# [1, 4],
# [2, 5]])
3-2.squeeze(): 크기가 1인 dimension을 제거한다.
j = torch.randn(1, 3, 4)
k = torch.squeeze(j)
print(k.shape) # 출력: torch.Size([3, 4])
3-3.unsqueeze(): 새로운 차원을 추가한다.
l = torch.randn(3, 4)
m = torch.unsqueeze(l, dim=0) # dim = 0은 0차원앞에 새로운 차원을 추가하라는 의미
print(m.shape) # 출력: torch.Size([1, 3, 4])
4. Tensor의 결합
4-1.stack(): 여러 Tensor를 겹합하여 새로운 차원을 만듭니다.
n = torch.tensor([1, 2, 3])
o = torch.tensor([4, 5, 6])
p = torch.stack((n, o))
print(p)
# 출력:
# tensor([[1, 2, 3],
# [4, 5, 6]])
피어세션
각 강의 별로 배웠던 내용 공유 및 추가적 공부에 대한 발표 진행 & 추후 업데이트 예정
회고
여러 일이 겹친날이라 힘들었다 ㅠ
'AI > Naver_Boostcamp AI Tech' 카테고리의 다른 글
텐서 연산 마스터하기: 기본부터 고급까지(2) (# 3일차-2) (0) | 2024.08.07 |
---|---|
텐서 연산 마스터하기: 기본부터 고급까지(1) (# 3일차-1) (0) | 2024.08.07 |
CPU와 GPU에서의 Tensor (1) | 2024.08.06 |
네부캠 AI tech 1일차 학습정리(Pytorch의 기본) (0) | 2024.08.05 |
네이버 부스트캠프 AI Tech 7기 합격 후기 (KDT , 프리코스 수강) (0) | 2024.08.05 |