HyeM

[PyTorch] 데이터 불러오기 & Layer 이해하기 본문

Study/AI&DeepLearning

[PyTorch] 데이터 불러오기 & Layer 이해하기

Hailey_HyeM207 2021. 1. 18. 15:32

PyTorch는 tensorflow와 비슷한 라이브러리로, 데이터 불러와서 모델학습을 진행할 수 있게 해주는 라이브러리이다.

저번 글까지는 tensorflow로 진행했는데, 이번엔 PyTorch로 해보며 텐서플로우와 파이토치를 비교해보자.

 


01. PyTorch 데이터 불러오기 


Data Loader 부르기

1. 먼저 라이브러리 import 해준다. 

2. 모델 파라미터 설정해준다.

3. 파이토치는 Data Loader를 불러 model에 넣는다.

그래서 아래의 loader만 기억하면 된다.  

위는 train loader, 아래는 test_loader이다.

4. 불러온 데이터를 확인해보자. 

PyTorch는 TensorFlow와 다르게 [Batch Size, Channel, Height, Width] 임을 명시해야 함.

 

5. 데이터를  시각화를 위한 사전 작업

이미지의 shape을 torch의 squeeze를 통해 조절하고, numpy화 한다.

label도 넘파이화 해준다.

 

 

6. 데이터 시각화

 

 


02. PyTorch Layer 이해하기


▶ Dataset 불러오기 

더보기

1. 라이브러리 import 

 2. data Loader 

3. 데이터 시각화로 살펴보기 

 

▶ 각 Layer별 설명 

import library 

▷Convolution

1. convolution 함수 적용 

nn_channels( in_channels, out_channels, kernel_size, stride )

  • in_channels: 받게 될 channel의 갯수
  • out_channels: 보내고 싶은 channel의 갯수
  • kernel_size: 만들고 싶은 kernel(weights)의 사이즈

(텐서플로우에서는 in_channel 을 설정하지 않는다.)

 

2.  시각화 (input, weight, output)

2-1. weight 시각화를 위해 slice하고 numpy화 한다. 

weight shape 확인 
numpy로 바꾸기 위해 detach한다. 

- 여기서 weight는 학습 가능한 상태이기 때문에 바로 numpy로 뽑아낼 수 없음

- detach() method는 그래프에서 잠깐 빼서 gradient에 영향을 받지 않게 함

 

 

2-2. input과 output도 시각화를 위해 numpy화 한다. 

2-2. 시각화

input의 image가 weight과 결합을 해서 output이 나옴

 

 

▶Pooling 

1. Pooling 함수 적용

F.max_pool2d(input, kernel size, stride)

 

2. 시각화

2-1. 시각화를 위해 weight가 있는지 확인해본다.

weight가 없어서 바로 numpy화 가능하다.

 

2-2. 시각화

이미지가 반으로 줄어들면서 특징이 도드라짐

 

▶Linear

nn.Linear는 2d가 아닌 1d만 들어가기 때문에 .view() 1D로 펼쳐줘야 한다.

 > 우선 activation function은 생략하고, 이후에 모델을 한번에 쌓을 때 사용할 것이다.

 > flatten을 할거고, 그 이후로 linear 를  거쳐가도록 할 것이다 .

 

1. view와 reshape으로 flatten 진행

flatten이 특별히 layer가 없어서 view나 reshape으로 flatten 한다.

2. 시각화로 확인 

 

 

▶ Softmax

결과를 numpy로 꺼내기 위해선 weight가 담긴 Linear에 weight를 꺼내줘야함

no grad 안하면 softmax를 볼 수 없음. 학습의 모드의 경우 볼 수 없음

 

no grad 안하면 softmax를 볼 수 없음. 학습의 모드의 경우 볼 수 없음

torch.no_grad() : 안의 weight 무시

 

▶Layer 쌓기

Layer 쌓기
결과

 

 

+ Layer 쌓기에서 forward 함수에서 x=x.view(-1, 4*4,*50) 은  아래코드 처럼 이미지를 model에 넣어 확인한다.

'Study > AI&DeepLearning' 카테고리의 다른 글

Tensorflow와 PyTorch 비교  (0) 2021.01.18
[PyTorch] Optimization & Training & Evaluating  (0) 2021.01.18
Evaluating & Prediction  (0) 2021.01.18
Optimization & Training (Beginner / Expert)  (0) 2021.01.18
각 Layer별 살펴보기  (0) 2021.01.11
Comments