드롭 아웃은 임베딩 레이어의 출력에 어떻게 적용됩니까?

Aug 21 2020
model = tf.keras.Sequential([
    tf.keras.layers.Embedding(1000, 16, input_length=20), 
    tf.keras.layers.Dropout(0.2),                           # <- How does the dropout work?
    tf.keras.layers.Conv1D(64, 5, activation='relu'),
    tf.keras.layers.MaxPooling1D(pool_size=4),
    tf.keras.layers.LSTM(64),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

Dense layers이전 레이어 뉴런이 매개 변수를 업데이트하지 못하도록 무작위로 드롭하고 방지하는 사이에 드롭 아웃이 적용될 때를 이해할 수 있습니다 . 임베딩 레이어 후 드롭 아웃이 어떻게 작동하는지 이해하지 못합니다.

Embedding 레이어의 출력 모양이 (batch_size,20,16)또는 단순히 (20,16)배치 크기를 무시 한다고 가정 해 보겠습니다 . 드롭 아웃은 임베딩 레이어의 출력에 어떻게 적용됩니까?

행이나 열을 임의로 드롭 아웃합니까?

답변

1 16Aghnar Aug 21 2020 at 20:45

행이나 열을 삭제하지 않고 스칼라에서 직접 작동합니다. 드롭 아웃 레이어 keras 설명서 를 설명하고 예제와 함께 설명 :

드롭 아웃 계층은 속도의 빈도로 입력 단위를 무작위로 0으로 설정합니다.

Dense Layer 이후 Dropout 입력은 말했듯이 Dense 레이어 뉴런의 출력입니다. 임베딩 레이어 후에 rate * (16 * input_length) = 0.2 * 20 * 16 = 64는 320 개의 스칼라 입력 중 0으로 설정된 입력 이 있어야합니다 . 이 64 개의 드롭 된 입력은 20x16 그리드에서 무작위로 선택됩니다. 드롭 아웃은 드롭되지 않은 입력에 요소를 곱하여 크기를 다시 조정합니다.$\frac{1}{1-rate}$.