Naver AI Tech 7기/LEVEL1

Week1 주간 학습정리 - [PyTorch]

지혜의 시작 2024. 8. 5. 14:57
728x90
개념/code 학습 중 생긴 이슈 및 해결 방법에 대해 기록하자

개념 Issue & Solution

1. 매개변수(parameter) vs 인자(argument)

parameter는 함수 안에서의 정의 및 사용에 나열되어 있는 변수들을 의미. -> 변수(variable)

argument는 함수를 호출할 때 전달되는 실제 값을 의미. -> 값(value)

def add(a, b):
    return a + b

num1 = 5
num2 = 4
total = add(num1, num2)
print(total)
  •  num1, num2 : argument
  • a, b : 매개변수(parameter)

reference : https://brunch.co.kr/@njnamju/106

  • i = torch.tensor([2, 3, 4], dtype = torch.int8)
  • [2, 3, 4] : argument(인자) → 1차원 tensor
  • dtype = torch.int8 : 매개변수(parameter)

2. Tensor의 공간 표현

4-d의 경우 3-d tensor의 컬러 이미지들을 여러 장 겹치게 되면 시간이라는 축이 생기게 되고 그럼 4-d tensor의 영상을

생성할 수 있음.

3차원 텐서는 2차원 텐서를 새로운 차원의 축으로 배열하면 됨.

4차원 텐서는 3차원 텐서를 새로운 차원의 축으로 배열하면 됨.

5차원 텐서는 4차원 텐서를 새로운 차원의 축으로 배열하면 됨.

→ 계속 확장 가능

 

3. 타입 캐스팅

→ ex) int → float : j = i.float() ; 32bit 부동 소수점 수로 변환하는 코드 표현

→ 딥러닝에서 모델의 매개변수와 그래디언트를 저장할때 메모리에 대한 부담을 줄여주기 위해 사용됨

→ 간단하지만 중요!!

 

4. Method vs Function vs Attribute

함수(Function)

  • 함수는 특정 작업을 수행하는 코드 블록으로, 독립적으로 정의되고 호출될 수 있음.
  • 함수는 일반적으로 객체나 클래스와 관련이 없음.
  • ex) Python에서 print()나 len() 같은 것은 함수.

메서드(Method)

  • 메서드는 클래스나 객체와 관련된 함수. 객체 지향 프로그래밍에서 클래스의 인스턴스에 속한 함수를 메서드라고 함.
  • 메서드는 반드시 객체를 통해 호출되며, 그 객체의 상태를 변경하거나 객체와 상호작용할 수 있음.
  • ex) Python에서 리스트 객체의 append()나 size()는 메서드.

 

 

  • 함수는 독립적일 수 있지만, 메서드는 클래스 또는 객체에 속한 함수.
  • Python에서는 함수와 메서드를 모두 ()를 사용해 호출하지만, 메서드는 클래스 인스턴스와 연관되어 있으며, 첫 번째 인자로 인스턴스를 받음(일반적으로 self로 명명).

속성(Attribute)

  • 클래스 내에서 정의되며, 해당 클래스의 인스턴스가 생성되면 인스턴스의 속성으로 존재하게 됨.
  • 속성은 객체의 상태를 나타내며, 메서드를 통해 이 상태를 변경하거나 조회할 수 있음.
  • 속성은 . (dot notation)을 사용하여 접근.

 

 

 

size() → method →  l.size() 

shape → 속성(attribute) → l.shape

 

5. torch.zeros_like() '_like()'

참조하고자 하는 텐서의 shape, dtype, device, requires_grad 등 텐서가 선언되면 정해지는 arguments들을 그대로 이식하여 새로운 텐서를 만드는 것

device 메모리 주소가 변하지 않는다. (GPU, CPU...)

→ 중요!

→  AI에서 메모리는 모델의 성능과도 연결 되기 때문 + 서로 다른 device 메모리에 할당이 되면 연산이 불가능하기 때문에

6. 용어

  • arange : array range의 약자임!
  • numel() → number of elements의 약자 → 요소의 총 개수를 확인

7. arange 함수에서 'step'

  • step을 소수로 주면 dtype이 float32가 됨.

8. What is cuda

  • 엔비디아가 개발한 병렬 컴퓨팅 플랫폼 & 프로그래밍 모델 → 고도의 계산 처리

9. What is In-place 방식

  • "in_place" 방식은 원래 데이터를 직접 수정하여 메모리 사용을 줄이고 성능을 최적화하는 방법(메모리 효율성 & 성능 향상)
  • inplace=True 옵션은 주로 판다스(Pandas) 라이브러리에서 데이터프레임(DataFrame)이나 시리즈(Series)의 메서드를 호출할 때 사용
  • 이 옵션을 사용하면 해당 메서드가 원래 객체를 직접 수정(in-place)하도록 합니다.
  • 이렇게 하면 별도의 복사본을 만들지 않아 메모리 사용을 줄일 수 있습니다.
  • fill_처럼 '_'를 사용하는 방법 & inplace=True
  • 모든 바꿔치기 연산(in-place)은 _ 접미사를 갖고 있다는 것!
  • reference : https://tutorials.pytorch.kr/beginner/former_torchies/tensor_tutorial_old.html

Code Issue & Solution

1. add_

 

 

 

 

 

728x90