2017-11-09 6 views
0

Keras를 사용하여 CNN을 만들고 있는데 plot_model()으로 모델을 시각화하고 싶습니다.plot_model()의 Keras 레이어 모양

Conv2d 레이어의 모양을 보면 내가 알아낼 수없는 것이 있습니다. 의 내 Conv2d 층 커널 크기 [8 x 8]을 가지고 있다고 가정 해 봅시다

은 보폭이 [4 by 4]이며, 패딩 'same' 내가 16 개 기능지도를합니다.

이 레이어의 입력 모양은 [None, 3, 160, 320]이고 출력은 [None,1,40,16]입니다.

'없음'은 샘플이지만 1과 40은 무엇입니까? 나는 16이 특징지도의 숫자라고 생각하니?

padding = 'same'을 구현 했으므로 이미지 크기가 입력과 같은 너비와 높이를 갖지 않아야합니까? 그렇지 않습니다.

감사합니다.

답변

0

글쎄, 당신이 "strides"를 사용하고 있기 때문에, 당신은 결코 같은 모양을 가지지 않을 것입니다.

사용자의 길쌈 필터 (슬라이딩 윈도우로 볼 수 있음)는 슬라이딩에서 4 픽셀을 점프합니다.

결과적으로 최종 모양을 4로 나눈 값 (반올림 값)을 얻을 수 있습니다.

  • 3/4

    은 = 1
  • 4분의 160 = 40
  • (16)가 실제로 기능지도의 수를 반올림.
+0

원시 이미지 입력 ​​데이터는 [샘플, 색상 수, 높이, 너비] 인 [없음, 3, 160, 320]입니다. 잘못된 치수에 회선을 적용하고 있습니까? 이것은 커널이 깊이 x 높이 평면에서 움직이고 있음을 나타 냅니까? 커널이 높이 x 너비 차원으로 움직여서는 안됩니까? – NorwegianClassic

+0

예. 치수가 거꾸로 표시됩니다. Keras 표준'data_format'은''channels_last'' :'(샘플, 높이, 너비, 채널)'입니다. 마지막 위치에서 '16 개의 기능'을 확인하십시오. –

+0

레이어에'data_format = 'channels_first''를 추가하거나' \ .keras \ keras.json' 파일에서 전역 설정을 변경하여 원하는 경우 변경할 수 있습니다. ---''channels_last''는 마지막 차원을 사용하는 특정 분류 문제, 손실 및 활성화에 대해 몇 가지 이점이 있습니다. –