저는 다른 많은 사람들이 사용하고있는 비교적 간단한 Keras 모델을 가지고 있습니다. 그 간단한 형태로, 그것은 다음과 같다 : n,m,p
어떤 임의의 크기이다Keras Dropout 레이어가 작동하지 않는 것 같습니다.
model = Sequential()
model.add(Dense(n, activation="relu"))
model.add(Dropout(dropout))
model.add(Dense(m, activation="relu"))
model.add(Dropout(dropout))
model.add(Dense(p))
및 dropout
이 강하 속도이다. 나는이 같은 모델을 훈련한다
model.compile(loss='mae', optimizer='adam')
lossHistory = keras.callbacks.History()
model.fit_generator(train_generator,
steps_per_epoch=steps_per_epoch,
epochs=epochs,
validation_data=valid_generator,
validation_steps=validation_steps,
callbacks = [lossHistory])
아무것도 미치지 않는다. 문제는 dropout 매개 변수가 아무 효과가없는 것 같습니다. 내가 말하는 이유는 내가 사용하는 드롭 아웃 값 (0.1,0.2, ..., 0.95를 시도 했음)에 관계없이 나는 많은 초과 피팅을 얻고 있다는 것입니다.
따라서 문제를 진단하기 위해 극한 값 (dropout = 0 및 1)을 사용하려고했습니다. 나는 탈락 수가 나타내는 것을 오해하고 있을지도 모르지만,이 값들 중 하나는 모든 것이 빠져 나가게하여 모델을 근본적으로 변형 할 수 없게 만든다 (일정한 출력을 리턴해야하기 때문에).
1/20 [>.............................] - ETA: 178s - loss: 0.2134
2/20 [==>...........................] - ETA: 102s - loss: 0.2295
3/20 [===>..........................] - ETA: 76s - loss: 0.2368
이 불가능합니다 같은
1/20 [>.............................] - ETA: 139s - loss: 0.9623
2/20 [==>...........................] - ETA: 87s - loss: 0.7758
3/20 [===>..........................] - ETA: 68s - loss: 0.6146
다음 1의 드롭 아웃 값으로, 교육은 같습니다처럼 그러나 .... 0의 드롭 아웃 값 훈련 보인다. 내가 뭘 여기 놓친거야? 그냥 기록, model.summary의 조각()에 대한
는
를 반환 ... 드롭 아웃 내 Tensorflow 모델에서 나를 위해 매우 유용했다,하지만 뭔가 내가 Keras에 구현하고 방법에있어 문제점으로 나타납니다
dense_1 (Dense) (None, 50) 550
_________________________________________________________________
dropout_1 (Dropout) (None, 50) 0
_________________________________________________________________
dense_2 (Dense) (None, 1) 51
그래서 내가 실제로 그 모델에 드롭 아웃 레이어가있는 것 같습니다. (실수로 모델에서 제외 된 바보 같은 버그가 아닙니다.)
위의 예에서 드롭 아웃 사용법이 올바른지 여부와 같은 질문의 일반적인 정신이 아닙니다. –
예, 죄송합니다. kera의 백엔드 정의에서 좀 더 자세히 살펴보면,'K.dropout()'은 [그냥'tf.nn.dropout()'을 호출합니다.] (https://github.com/fchollet/keras/blob/ master/keras/backend/tensorflow_backend.py), 나는 kera의 dropout layer를 두개의 모델에서 성공적으로 사용했기 때문에 "그것이 나에게 효과가있다"고 말할 것이다. 데이터가 충분한 지 확인하거나 기능 엔지니어링에 시간을 할애하고 데이터를 시각화하고 일부 잡음을 제거 할 수 있는지 확인해야 할 수도 있습니다. –