0

나는 tensorflow 1.4.0 백엔드로 keras 1.2.2와 함께 작업합니다.이미지 분할을 위해 CNN을 교육하는 동안 내 손실이 갑자기 증가 할 수 있습니까?

저는 unet 아키텍처를 사용하고 있습니다. 650x650 픽셀과 6 개의 채널로 된 708 개의 이미지가 있습니다. 나는 4248 개의 이미지를 위해 미러링과 회전으로 데이터 세트를 보강했다. 나는 이미지의 전체의 약 30 %의 BATCH_SIZE의 검증 세트가

optimizer = SGD(lr=0.01, momentum=0.9, nesterov=True) 

:

def jaccard_coef_loss(y_true, y_pred): 
    smooth = 1e-12 
    intersection = K.sum(y_true * y_pred, axis=[0, -1, -2]) 
    sum_ = K.sum(y_true + y_pred, axis=[0, -1, -2]) 
    jac = (intersection + smooth)/(sum_ - intersection + smooth) 
    return 1 - K.mean(jac) 

내 최적화 : 나는이 개 수업을

내 손실 함수는 하나입니다 4, 셔플이 참으로 설정됩니다. 모델은 각 시대마다 모든 교육 이미지를 검토합니다. 200 개 신기원이 예정되어 있지만, 10 개 신기원에 대한 유효성 검증 세트가 개선되지 않으면 학습이 중단됩니다. 여기

내가 신 (新) 시대 (12)와 13 내 잘못인가하거나 업그레이드하여 고정 될 알려진 버그가 사이에 무슨 일이 생긴 모르는

Epoch 10/200 
4248/4248 [==============================] - 3192s - loss: 0.1388 - acc: 0.0868 - jaccard_coef: 0.8612 - jaccard_coef_int: 0.8613 - val_loss: 0.2957 - val_acc: 0.0536 - val_jaccard_coef: 0.7043 - val_jaccard_coef_int: 0.7043 
Epoch 11/200 
4248/4248 [==============================] - 3167s - loss: 0.1375 - acc: 0.0901 - jaccard_coef: 0.8625 - jaccard_coef_int: 0.8626 - val_loss: 0.2968 - val_acc: 0.0632 - val_jaccard_coef: 0.7032 - val_jaccard_coef_int: 0.7033 
Epoch 12/200 
4248/4248 [==============================] - 3272s - loss: 0.1964 - acc: 0.1084 - jaccard_coef: 0.8036 - jaccard_coef_int: 0.8037 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2793e-15 - val_jaccard_coef_int: 4.7833e-18 
Epoch 13/200 
4248/4248 [==============================] - 3112s - loss: 1.0000 - acc: 0.5089 - jaccard_coef: 4.6290e-15 - jaccard_coef_int: 5.5532e-18 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2659e-15 - val_jaccard_coef_int: 4.7833e-18 
Epoch 14/200 
4248/4248 [==============================] - 2032s - loss: 1.0000 - acc: 0.5089 - jaccard_coef: 2.5857e-15 - jaccard_coef_int: 5.1207e-18 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2659e-15 - val_jaccard_coef_int: 4.7833e-18 
Epoch 15/200 
4248/4248 [==============================] - 2260s - loss: 1.0000 - acc: 0.5089 - jaccard_coef: 2.6600e-15 - jaccard_coef_int: 5.0932e-18 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2659e-15 - val_jaccard_coef_int: 4.7833e-18 
Epoch 16/200 
4248/4248 [==============================] - 2914s - loss: 1.0000 - acc: 0.5089 - jaccard_coef: 2.3220e-15 - jaccard_coef_int: 4.8916e-18 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2659e-15 - val_jaccard_coef_int: 4.7833e-18 
Epoch 17/200 
4248/4248 [==============================] - 2928s - loss: 1.0000 - acc: 0.5089 - jaccard_coef: 2.6034e-15 - jaccard_coef_int: 6.3645e-18 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2659e-15 - val_jaccard_coef_int: 4.7833e-18 
Epoch 18/200 
4248/4248 [==============================] - 2738s - loss: 1.0000 - acc: 0.5089 - jaccard_coef: 2.3913e-15 - jaccard_coef_int: 4.7182e-18 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2659e-15 - val_jaccard_coef_int: 4.7833e-18 
Epoch 19/200 
4248/4248 [==============================] - 2922s - loss: 1.0000 - acc: 0.5089 - jaccard_coef: 6.2745e-15 - jaccard_coef_int: 5.0041e-18 - val_loss: 1.0000 - val_acc: 0.5066 - val_jaccard_coef: 1.2659e-15 - val_jaccard_coef_int: 4.7833e-18 

마지막 시대에 대한 교육 로그입니다 keras/tf의 최신 버전입니까?

답변

1

최적화 과정이 분기 된 것처럼 보입니다. 아마 모델에 쓰레기를 예측하게하는 매우 큰 그라디언트가있을 것입니다. 학습 속도를 0.001로 낮추고 12 번째 반복에서 다시 시작하십시오.

+0

이런 경우에는 확실히 'adam'최적화 도구를 사용합니다. SGD는 단순히 최악입니다. (초보자는 최소한입니다.) –

+0

@ DanielMöller "Adam"최적화 도구는 세분화 작업에 적합합니다. SGD가 종종 탐지하기에 더 좋습니다. 나는 줄을 낮추고 거기에서 계속해서 시작할 것입니다. – Shai

관련 문제