8

Pracuję nad klasyfikacją przyrostową klasy obrazu przy użyciu CNN jako ekstraktora funkcji i w pełni połączonego bloku do klasyfikacji.Własna funkcja utraty w Kerasach

Najpierw dostosowałem sieć VGG do przeszkolonej osoby, aby wykonać nowe zadanie. Gdy sieć zostanie przeszkolona do nowego zadania, przechowuję kilka przykładów dla każdej klasy, aby uniknąć zapominania, kiedy nowe klasy są dostępne.

Gdy niektóre klasy są dostępne, muszę obliczyć każdy wynik w przykładach obejmujących przykłady dla nowych klas. Teraz dodając zera do wyjść dla starych klas i dodając etykietę odpowiadającą każdej nowej klasie na wyjściach nowej klasy, mam nowe etykiety, tj .: , jeśli 3 nowe klasy wpisz ...

Stare wyjście typu klasy: [0.1, 0.05, 0.79, ..., 0 0 0]

Nowe wyjście klasy: [0.1, 0.09, 0.3, 0.4, ..., 1 0 0] ** ostatnie wyjścia odpowiadają klasie.

Moje pytanie brzmi: jak mogę zmienić funkcję utraty dla niestandardowej, aby ćwiczyć nowe zajęcia? funkcji straty, które chcę, aby wdrożyć jest zdefiniowany jako:

loss function

gdzie strata destylacja odpowiada wyjściami dla starych klas, aby uniknąć zapomnienia i utrata Klasyfikacja odpowiada nowych klas.

Jeśli możesz podać mi próbkę kodu, aby zmienić funkcję utraty w aparatach, byłoby miło.

Dzięki !!!!!

Odpowiedz

17

Wszystko, co musisz zrobić, to zdefiniować do tego funkcję, korzystając z funkcji backend keras do obliczeń. Funkcja musi przyjmować wartości rzeczywiste i przewidywane wartości modelu.

Teraz, ponieważ nie jestem pewien, co to jest g, q, x i y w twojej funkcji, po prostu utworzę tutaj prosty przykład, nie troszcząc się o to, co to oznacza ani czy jest to prawdziwa użyteczna funkcja:

import keras.backend as K 

def customLoss(yTrue,yPred): 
    return K.sum(K.log(yTrue) - K.log(yPred)) 

Wszystkie funkcje zaplecza można zobaczyć tutaj: https://keras.io/backend/

Po tym, skompilować model używając tej funkcji zamiast regularnej jednym:

model.compile(loss=customLoss, optimizer = .....) 
+0

okaay, to jest dokładnie to, co iw jak szukam, dziękuję bardzo !! – Eric

+0

@Daniel Mógłbyś sprawdzić to pytanie podobnie jak powyżej, ale nie wiesz jak to zrobić https://stackoverflow.com/questions/49088206/w-categoryical-crossentropy-function-keras-tensorflow –

Powiązane problemy