작성
·
52
0
선생님 안녕하세요
좋은 강의 감사드립니다.
배치 정규화의 이해와 적용 02 강의의 12:19 ~ 12:20 를 보시면 코드에 이상한(?) 부분이 있는 것 같습니다.
x = Conv2D(filters=64, kernel_size=3, padding='same')(x)
x = Activation('relu')(x)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=2)(x)
코드가 이렇게 되어있는데요. 왜 activation을 2번 해주시는 것이죠?
아래와 같이 수정되어야 하는 것이 아닌지, 질문드립니다.
x = Conv2D(filters=64, kernel_size=3, padding='same')(x)
x = BatchNormalization()(x) ########### 수
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=2)(x)
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. nathan님.
활성화 함수를 두 번 적용한 것에 대한 질문이시군요. 이는 일반적으로 코드의 오류로 간주됩니다. 활성화 함수는 한 번만 적용해야 하는 것이 맞습니다. Activation('relu')
를 두 번 적용하는 것은 의미가 없으며, 코드 작성 시 실수로 생긴 것일 가능성이 높습니다.
이와 관련된 기존 질문들과 답변을 참고하시면 더 도움이 되실 것 같습니다:
“활성화 함수 2번 적용된 BN 실습 코드”: 해당 질문에서도 활성화 함수가 두 번 사용된 이유에 대해 문의하고 있으며, 지식공유자는 코드 오류로 한 번만 넣어야 한다고 설명하고 있습니다.
“relu 적용 두번”: 동일한 코드 오류에 대한 질문이며, 지식공유자가 오타임을 인정하고 수정 필요성을 언급하고 있습니다.
“Conv2D 이후 Activation 2번 사용”: 또 다른 사용자도 같은 부분에 대해 궁금증을 제기하였고, 지식공유자가 코드의 실수라고 답변하고 있습니다.
nathan님께서 제안하신 대로 BatchNormalization()
을 포함하여 수정을 하시는 것이 코드의 구조상 더 맞다고 할 수 있습니다. 활성화 함수는 주로 네트워크 층과 층 사이에 하나씩 적용되며, 두 번 중복해서 사용할 필요는 없습니다.
이해를 돕기 위해 링크된 질문들을 참조하시면 더 상세한 맥락을 파악하실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.