AI 정리

AI에 들어가기 전 파이썬 개념 실습

dawon-project 2025. 4. 2. 02:24

컨테이너 타입 변수에 주의 : 파이썬에서 변수는 단지 실제 데이터 구조로 향하는 포인터에 지나지 않는다. 넘파이 배열 등에서는 이 점을 의식하지 않으면 생각지도 못한 결과를 초래하는 경우가 있다.

 

-> NumPy 배열은 모든 요소가 동일한 데이터 타입과 차원을 가져야한다.

<텐서와 넘파이 변수 간 변환>

  • numpy() 함수를 통한 변환 ( 텐서 변수 -> 넘파이 변수)
  • from_numpy(numpy 데이터값들) 함수를 통한 변환 ( 넘파이 변수 -> 텐서 변수)
  • tensor(numpy 데이터 값들) 함수를 통한 변환 ( 넘파이 변수 -> 텐서 변수)

-> tensor와 numpy에서 또한 얕은 복사할 시에 값이 둘다 바뀐다.

numpy -> torch로 변환할때는 tensor()를 사용하면 torch는 변환할때 라이브러리 자체가 깊은 복사를 하기 때문에 영향을 주지 않는다.

하지만  from_numpy()를 사용하면 메모리를 공유한다.

 

Numpy의 헷갈릴만한 인덱싱 

<numpy class 속성>

  • shape
  • ndim
  • size
  • dtype

Numpy를 이용한 특별한 행렬

행렬 변환

-> Squeeze 함수는 차원 중에 크기가 1인 것만 제거해준다.

numpy 자료형

배열 객체 연결과 연산 + 랜덤 함수 ->  ~ 방향으로 쌓기와 행/열 개수가 늘어나는 것의 말 차이( 헷갈리지 말자)

**축을 따라 연산한다는 것은 해당 축이 "사라지는 방향"을 의미 

0 : 행 / 1 : 열
즉, axis=0을 주면 행들이 사라지고 열 단위로 연산이 일어남.
반대로 axis=1을 주면 열들이 사라지고 행 단위로 연산이 일어남.

 

  • 정규 분포 : 데이터가 평균을 중심으로 좌우 대칭을 이루며 종 모양을 그리는 확률 분포
  • 표준 정규 분포 : 모든 정규 분포를 표준화(Z-score 변환)한 것 / 평균 = 0 / 표준편차 =1 로 고정

  • np.random.rand() : 0 ~ 1 사이의 균일한 분포를 따르는 난수 생성
  • np.random.randint(low, high, size) : low ~ high 미만의 정수 난수 생성
  • np.random.randn() : 표준 정규 분표(평균 =0, 분산 =1)를 따르는 난수 생성
  • np.random.normal(loc(평균), scale(표준편차), size(크기)) : 정규분포(가우시안 분포)를 따르는 난수 생성 
  • np.random.seed(value) : 랜덤 시드 설정 (항상 같은 랜덤값이 나오도록 설정)

<matplotlib.pyplot 설정>

  • plt.xlim :  x축의 범위를 제한하는 함수
  • plt.ylim : y축의 범위를 제한하는 함수
  • add_patch : 도형을 현재 Axes에 추가해주는 함수
  • plt.legend() : label을 보이도록하는 함수
  • ax.axis('off') : 눈금 비활성화
  • ax.set_xticks([]) : x 눈금 범위를 정할 수 있는 함수
  • ax.set_ysticks([]) : y눈금 범위를 정할 수 있는 함수
  • plt.tight_layout() : 여러 개의 서브플롯을 만들면, 그래프들이 서로 겹치거나 라벨이 잘릴 수 있는데, 이때 plt.tight_layout()을 호출하면 자동으로 여백을 조정해서 보기 좋게 배치해주는 역할을 함

< 함수를 인스턴스로 사용하는 방법 >

  • __call__ : 파이썬 내부에 매직메서드로 선언된 call 함수를 통해서 해당 클래스를 불렀을때 함수 내부의 내용을 실행할 수 있도록 해주는 함수
  • forward() : nn.Module 을 상속해서 순전파 연산을 할때 자동으로 호출하게 되는 함수
    -> 그때 nn.Module 내부에는 __call__함수가 정의 되어있으며 이 함수에서 forward 함수를 호출한다. 

 

Tensor 자료형

  • torch.rand() : 0 ~ 1 사이의 균일한 분포를 따르는 난수 생성
  • torch.randint(mean, std, size) : low ~ high 미만의 정수 난수 생성
  • torch.randn() : 표준 정규 분표(평균 =0, 분산 =1)를 따르는 난수 생성
  • torch.normal(loc(평균), scale(표준편차), size(크기)) : 정규분포(가우시안 분포)를 따르는 난수 생성 
  • torch.manual_seed(value) : 랜덤 시드 설정 (항상 같은 랜덤값이 나오도록 설정)
    -> numpy에서는 np.random.seed(value)이다 ****주의***

 

torch의 dimention 변경 함수 - view, squeeze, unsqueeze, reshape

 

tensor 배열 생성 함수

tensor arange : 끝 값을 포함하지 않음

tensor linespace(inclusive,exclusive) : 끝 값을 포함

 

 

그 밖의 tensor 속성

  1. 텐서 전체에서 최댓값 찾기 → torch.max(tensor) 
    • torch.max(tensor, dim) : 텐서의 특정 차원에서 최댓값과 그 위치 찾기 
  2. 텐서의 특정 차원에서 최댓값과 그 위치 찾기 → torch.max(tensor, dim)

 

 

summary1.ipynb
0.09MB