인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Alex님의 프로필 이미지

작성한 질문수

딥러닝 CNN 완벽 가이드 - TFKeras 버전

배치 정규화(Batch Normalization) 이해와 적용 - 02

Conv함수 안에 activation 을 넣지 않는 이유가 뭔지 궁금합니다.

작성

·

62

0

model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) 이렇게 쓰기도 했었는데

1. 혹시 activation 을 따로 두게되면 어떤 점이 달라지나요?

2. 또한 Conv, BatchNormalization, Activation, MaxPooling2D, Dropuout 이 있다면 순서가 어떻게 되나요?

답변 2

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

  1. Conv2D(32, (3, 3), activation='relu',... ) 다음에 ReLU Layer를 적용하면 Activation을 연달아 두번 하게 됩니다. Conv -> Relu -> Relu 적용한 것과 같습니다.

  2. Batch Normalization은 Conv 이후에, Activation 전에 합니다. Conv -> BN -> Activation 순으로 연달아 적용하며 MaxPooling도 이후에 적용할 수 있습니다. 보통 Drop out은 Classification layer 적용 시에 사용하므로 거의 맨 마지막에 사용됩니다.

     

     

    감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. Alex님, 질문해주신 내용에 대한 답변을 준비해 보았습니다.

  1. activation을 Conv2D와 함께 사용하지 않는 이유는 보통 코드 구조와 가독성을 위한 것입니다. Conv2D 레이어의 결과에 대해 활성화 함수를 나중에 별도의 레이어로 추가하면, 모델의 구조가 좀 더 명확해지고, 각 단계에서의 출력 값을 쉽게 추적하고 검사할 수 있습니다. 이는 특히 다양한 실험을 하거나, 각 레이어의 출력이 중요한 정보를 제공해야 할 때 유용합니다.

  2. 레イヤ드 순서로는 일반적으로 Conv2D -> BatchNormalization -> Activation -> MaxPooling2D -> Dropout 순서를 따릅니다.

  • Conv2D: 먼저 이미지에서 특징을 추출합니다.
  • BatchNormalization: 층별 정규화를 통해 학습을 안정화하고, 학습 속도를 증가시킵니다.
  • Activation: 비선형성을 주입하여 모델의 표현력을 강화합니다.
  • MaxPooling2D: 특성을 추출한 후 공간 크기를 줄여 계산량을 감소시키고 중요한 특징을 추출합니다.
  • Dropout: 모델의 과적합을 방지하기 위해 임의의 뉴런을 학습 시 비활성화합니다.

이와 관련된 다른 질문이 혹시 있을지 몰라, 도움이 될 만한 몇 가지 질문을 첨부하겠습니다:

더욱 명확한 설명이나 추가적인 질문이 있으시면 주저 말고 해 주시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Alex님의 프로필 이미지

작성한 질문수

질문하기