하루 하루

펭귄브로의 3분 딥러닝 파이토치맛 _ 4일차 본문

IT/Artificial intelligence

펭귄브로의 3분 딥러닝 파이토치맛 _ 4일차

san_deul 2020. 4. 19. 23:55

CNN

이미지를 볼 때 뇌가 특정 부위만 자극된다는 사실에서 착안하여 만든 모델

 

필터  / Kernel 

- 이미지의 특징을 추출한다.

- 컨볼루션 계츨 하나에 여러 개가 존재할 수 있다. 

-  (홀수 정수 ) * (홀수 정수 ) 크기가 보통 사용된다. 

 

Stride 

- 필터가 이미지에 적용될 때 한 번에 얼마나 이동하는지에 대한 갑사

- Stride의 크긱가 커질수록 출력 Tensor의 크기는 작아진다.

 

Feature Map

 컨볼루션을 거쳐 만들어지는 이미지 

 

Pooling

- 과적합의 위험을 줄이기 위해 Convolution에서 추출한 특징을 값 하나로 추려내서 특징 맵의 크기를 줄이고 

중요한 특징을 강조하는 역할 

- 필터가 지나갈 떄 마다 평균이나 최댓값을 가져오는 연산 수행

 

 

더보기

tf.nn.max_pool2d( )

tf.nn.max_pool2d( input, ksize, strides, padding, data_format='NHWC', name=None )

- input: Tensor 형식 ( data_format ) .

- ksize: 입력 Tensor의 각 차원에 대한 윈도우 크기

- strides: 슬라이딩 윈도우의 보폭

- padding: 'VALID' / 'SAME'

- data_format: 문자열( 'NHWC', 'NCHW'및 'NCHW_VECT_C' 지원 )

- name: 조작 이름 ( option ) return Tensor의해 지정된 형식 data_format ( The max pooled output tensor )

 

1. 컨볼루션

class Net(nn.Module):
    def __init__(self):
        self.conv1 = nn.Conv2d(1,10,kernel_size = 5)

    def forward(self, x):
        x = self.conv1(x)

 

2. 풀링

class Net(nn.Module): 
    def forward(self, x):
        x = F.max_pool2d(x,2)

3. 드롭아웃

class Net(nn.Module):
    def __init__(self):
       	self.conv1_drop = nn.Dropout2d() #드롭아웃 

    def forward(self, x):
        x = self.conv2_drop(x)

4. 일반 신경망과 활성화 함수 relu 

class Net(nn.Module):
    def __init__(self):
       	 self.fc1 = nn.Linear(320,50)

    def forward(self, x):
        x = F.relu(self.fc1(x)) 
        return F.log_softmax(x, dim = 1) 

 

Comments