작성
·
203
0
input_tensor = Input(shape = (IMAGE_SIZE, IMAGE_SIZE, 3))
x = Conv2D(filters = 32, kernel_size = (3, 3), padding = 'same', activation = 'relu', kernel_initializer = 'he_normal')(input_tensor)
이 부분에서 입력데이터가 3차원으로 들어오잖아요.
저번 강의에서 개별 커널의 차원은 3차원이라고 하셨던거 같은데,
그럼 이 코드에선 한개의 커널이 rgb, 총 3개의 채널을 가진 (3 x 3 x 3)가 되는 것인가요?
위에 전제가 맞다면, 2번째 줄 kernel_size가 (3, 3)인 이유는 케라스 내부에서 알아서 3개의 채널을 만들어주기 때문인가요??
답변 1
0
안녕하십니까,
위에 전제가 맞다면, 2번째 줄 kernel_size가 (3, 3)인 이유는 케라스 내부에서 알아서 3개의 채널을 만들어주기 때문인가요??
=> 네 맞습니다. (입력 채널 수를 파악해서) 케라스 내부에서 알아서 3개의 채널을 만들어 줍니다.
좀 더 정확하게 말씀드리자면, (강의에서도 말씀드리자면) kernel 을 일반적으로 3차원으로 표현하지만, 정확한 용어 표현으로는 2차원입니다. 그리고 이차원 kernel을 3차원으로 표현한 것이 filter 입니다.
그러니까 Conv2D(filters = 32, kernel_size = (3, 3)) 는
kernel size 3x3이고 depth(그러니까 채널수)가 3인 filter(shape는 3x3x3) 32개를 Conv2D 연산으로 적용한다는 의미 입니다.
감사합니다.