ABOUT ME

-

  • [Lecture note] CNN - N431
    카테고리 없음 2021. 8. 25. 14:03

     

    Convolution (합성곱)

    특정 필터를 기반으로 가진 데이터 셋의 엣지를 찾아내는 것 

    필터로 곱해준 다음 모두 더해준다.

     

    1D VS 2D Convolution

     

    Stride

    한번에 얼만큼 걸을지 나타내는 말이다. 

    Convolution 진행 할 때 한번에 건너뛰는 칸수를 나타낸다.  

     

    • Filter: 가중치 (weights parameters)의 집합으로 이루어져 가장 작은 특징을 잡아내는 창. 신경망에서 찾아낸 웨이트(가중치)를 말한다. 커널(Kernel)이라고도 한다. 
    • Padding: Zeros(또는 다른 값)을 이미지의 외각(가장자리)에 배치하여 conv를 할 때 원래 이미지와 같은 데이터의 수를 갖을 수 있도록 도와줌 (Stride = 1일 때), 2이상이면 아무리 패딩넣어도 데이터는 줄어든다.

     

    Pooling (풀링)

    매트릭스의 특정 부분 매트릭스(주로 2x2) 중 max, avg 값만 추려내어 차원 줄여주는 방법

    stride는 행렬크기로 고정된다. 아래는 풀링행렬 2X2, Stride 2

    컨볼루젼 이후 실행된다.

    # Setup Architecture
    # 기존 신경망과 달리 Dense 대신에 Conv2가 생기신 것을 볼 수 있습니다. 
    # 풀링 레이어와 마지막에는 Dense인 일반 신경망이 또 등장합니다.
    model = Sequential() 
    model.add(Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3))) #노드의 개수 32, 필터(커널) 3x3 행렬
    model.add(MaxPooling2D((2,2)))
    model.add(Conv2D(64, (3,3), activation='relu'))
    model.add(MaxPooling2D((2,2)))
    model.add(Conv2D(64, (3,3), activation='relu'))
    model.add(Flatten())
    model.add(Dense(64, activation='relu'))
    model.add(Dense(10, activation='softmax'))
    
    model.summary()

     

    input_shape = (256, 256, 3)
    kernel_size = (5, 5)
    padding = "valid"
    strides = 2
    
    #output size = (126, 126, 3)

     

    댓글