Keras에서 Dense Layer는 가중치와 입력 텐서 간의 내적을 수행합니다. 문서에 명시된 대로 기본 동작은 입력 텐서의 순위가 2보다 큰 경우 해당 텐서를 평면화하는 것입니다. 그러나 이 문서와 달리 Dense 레이어는 실제로 입력 텐서의 마지막 축에 적용됩니다.
예를 들어 설명해 보겠습니다. 모양이 (n_dim1, n_dim2, ..., n_dimk)인 입력 텐서에 m 단위가 적용된 밀도 레이어를 가정합니다. 출력 형태는 (n_dim1, n_dim2, ..., m)입니다.
이 관찰은 TimeDistributed(Dense(...))와 Dense(...)가 기능적으로 동일하다는 것을 의미합니다. 또한 가중치를 공유하는 Dense 레이어를 적용하면 흥미로운 효과가 나타납니다. 다음 장난감 네트워크를 고려하십시오.
<code class="python">model = Sequential() model.add(Dense(10, input_shape=(20, 5))) model.summary()</code>
아래 모델 요약에는 훈련 가능한 매개변수 60개만 표시됩니다.
_________________________________________________________________ Layer (type) Output Shape Param # ================================================================= dense_1 (Dense) (None, 20, 10) 60 ================================================================= Total params: 60 Trainable params: 60 Non-trainable params: 0 _________________________________________________________________
이는 Dense 레이어의 각 단위가 각각의 5개 요소 모두에 연결되기 때문에 발생합니다. 동일한 가중치를 가진 입력 행. 결과적으로 10 × 5 10(단위당 바이어스 매개변수) = 60개의 매개변수만 필요합니다.
이 동작을 더 자세히 설명하려면 다음 시각적 표현을 고려하세요.
[밀집 레이어 이미지 Keras에서 2차원 이상의 입력에 적용]
이 이미지에서는 Dense 레이어(빨간색으로 표시)가 3차원 입력 텐서에 적용됩니다. 출력 텐서 역시 3차원이며, 입력 텐서의 각 열은 출력 텐서의 열에 독립적으로 매핑됩니다.
위 내용은 Keras의 밀집 레이어가 입력 텐서를 평면화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!