본문 바로가기
Study/DL

[모두를 위한 딥러닝 시즌2] lab 1-1,1-2,8-1,8-2

by hyeon827 2024. 1. 9.

[lab 1-1]

  • 1D: Vector
  • 2D: Matrix
  • 3D: Tensor
  • 4D: Tensor를 위로 확장
  • 5D: 4차원을 옆으로 확장
  • 6D: 5차원을 뒤로 확장

  • l t l = (64, 256) ---> 딥러닝을 처음 접할 때 가장 기본적인 matrix

  • Vision(이미지,영상) 과 NLP에서는 3차원 데이터를 가지고 입출력을 다룸
  • NLP의 3차원 데이터 경우 빨간색 빗금을 친 네모가 하나의 문장이고 batch size만큼 문장이 존재

 

 

  • 불가피하게 서로 다른 크기 Tensor들의 사칙연산이 이루어질 수 있음
  • 'PyTorch' 가 자동적으로 size를 맞춤 => 'Broadcasting'
  • 주의: 에러가 존재해도 자동으로 Broadcasting 수행을 하기 때문에 추후 에러 발생 시 원인 찾기 힘들어 조심히 사용

  • A.matmul(B) : A행렬과 B행렬의 행렬곱
  • A.mul(B) : A행렬과 B행렬의 크기가 다르더라도 broadcasting 된 후 element-wise 곱 수행

  • mean(dim=?): 해당 차원 제거 후 평균
  • dim : 해당 차원 제거
  • dim=0 : 첫번째 차원(행) 제거
  • dim=1 : 두 번째 차원(열) 제거
  • dim=-1: 마지막 차원(열) 제거

  • sum(dim=?): 해당 차원 제거 후 합

 

  • max(dim=?) : 해당 차원 제거 후 원소의 최대값과 인덱스 값(argmax) 출력

 

[lab 1-2]

  • view (numpy에서는 reshape): 텐서의 크기 변경
  • 단, 텐서 안의 운소의 개수 유지
  • -1: 사용자가 잘 모르겠으나 PyTorch에 맡김

  • squeeze: 차원이 1인 경우 해당 차원 제거
  • dim=0 : 첫 번째 차원(행)에 1이 있을 경우 제거
  • dim=1: 두 번째 차원(열)에 1이 있을 경우 제거

  • unsqueeze: 특정 위치에 1인 차원 추가

  • Type Casting -> 자료형 변
  • torch.FloatTensor: 32bit 부동소수점
  • torch.LongTensor: 64bit 부호 있는 정수
  • torch.ByteTensor: Byte 타입

  • cat: 두 텐서를 연결
  • dim=0: 첫 번째 차원(행)을 늘림
  • dim=1: 두 번째 차원(열)을 늘림

  • cat vs stack (stack이 더 편리)
  • cat : 기준 차원에 대해 두 텐서의 요소를 연결하며(list의 extend), 기준 차원을 제외한 shape은 동일해야 함
  • stack: 새로운 차원을 기준으로 두 텐서를 연결하며, 대상이 되는 텐서의 모양이 모두 같아야 함

  • ones_like(): 동일한 크기의 1로 채워진 텐서를 만듦
  • zeros_like(): 동일한 크기의 0으로 채워진 텐서를 만듦

  • 연산 뒤 _ : 연산 뒤 기존 값을 덮어씀

[lab 8-1]

  • AND: 둘 다 1이어야 1
  • OR: 하나라도 1이면 1

  • 퍼셉트론은 직선으로 나뉜 두 영역을 만듦
  • 퍼셉트론 이용하면 AND,OR 문제 해결 가능 

  • XOR: 서로 같은 값이면 0, 서로 다른 값이면 1
  • 한 개의 layer를 가지고 있는 퍼셉트론 구조는 XOR 문제 해결 불가능
  • XOR 문제를 해결하려면 멀티 layer가 필요하지만 그 당시 각층의 weight들을 학습할 수 있는 방법 X
  • 인공신경망 암흑기 돌입

  • 퍼셉트론 구조로 XOR 구현 코드
  • 대략 200번째 이상부터는 Loss 값 변화 X -> 제대로 학습 X

* optimizer -> 1. SGD: training data에 대해 error를 일일이 계산한 뒤 가중치 값 즉시 조정(속도 빠름)

                      2. Batch: 가중치 값의 평균을 계산해서 가중치 값 업데이트(느리지만 안정적)

                      3. Mini Batch: 일부 train 데이터만 선별해 가중치를 평균 낸 뒤 업데이트(SGD 장점+Batch장점)

 

 

  • MLP(Multi-Layer Perceptron)이 등장하면서 XOR 문제 해결