Model Checkpoint keras nie działa

8

Próbuję trenować model w keras i używam ModelCheckpoint, aby zapisać najlepszy model zgodnie z monitorowaną miarą walidacji (w moim przypadku indeks Jaccard ).

Chociaż widzę, że model poprawia się w tablicy tensorboard, to kiedy próbuję załadować ciężary i ocenić model, wcale nie działa. Ponadto po znaczniku czasu w pliku, w którym wagi mają być przechowywane, mogę stwierdzić, że w ogóle nie są zapisywane. Znacznik czasu odpowiada mniej więcej czasowi, w którym zacząłem trenować.

Czy ktoś wcześniej napotkał taki problem?

ILM91
źródło

Odpowiedzi:

7

Czy korzystasz ModelCheckpointz jego domyślnych parametrów (poza tym monitor)?

ModelCheckpointma parametr o nazwie, modektóry określa typ metryki, która ma zostać użyta. modemoże przyjąć 3 wartości 'min' 'max'i 'auto'(co jest wartością domyślną):

  • min: oznacza, że ​​chcesz zminimalizować metrykę (np. funkcję straty).
  • max: oznacza, że ​​chcesz zmaksymalizować metrykę (np. dokładność).
  • auto: próbuje samodzielnie wymyślić, co robić. Jeśli spojrzysz na kod , sprawdza, czy nazwa metryki zawiera 'acc'lub czy zaczyna się od 'fmeasure'. Jeśli tak, ustawia tryb na max, jeśli nie, ustawia go na min.

W twoim przypadku monitorujesz indeks jaccard, który jest metryką, którą chcesz zmaksymalizować, więc chcesz ustawić tryb na max. Zwykle ponieważ „jaccard” zawiera ciąg „acc”, nawet jeśli ustawiony jest tryb auto, powinien działać poprawnie.

Jeśli jednak nazwiesz swoją metrykę dowolną (np. my_metric), Tryb domyślny zostanie ustawiony na min, co oznacza, że ​​będzie przechowywał wagi, które osiągają najmniejszą wydajność metryki, które powinny być wagami pierwszej epoki.

Sugestia : następnym razem spróbuj mode='max'się upewnić.

MzdR
źródło
Tak masz rację. Nazwałem swoją metrykę intersection_over_unioni prawdopodobnie przechowywał ciężary, które miały najniższy wynik, czyli te z pierwszej epoki. To ma sens. Dzięki!
ILM91,
Nie ma za co. Cieszę się, że mogłem pomóc!
MzdR