Keras предоставя няколко вградени показателя, които могат да се използват директно за оценка на производителността на модела. Въпреки това, не е необичайно да се включват персонализирани обратни извиквания, за да се разширят отвъд възможностите на keras, както аз самият трябваше да направя наскоро. В тази публикация обсъждам как да използвам персонализирани изчислени стойности (метрики, загуби) с вградени обратни извиквания.

Преди да продължим, ще трябва да дефинираме собствено персонализирано обратно извикване, за да извършим изчисления, които искаме за проследяване на напредъка на обучението или за оценка на производителността на модела. По-долу е даден фиктивен код за дефиниране на персонализирано обратно извикване.

CustomCallback(keras.callbacks.Callback):
   def on_epoch_end(self, epoch, logs={}):
            :
      do_somthing_here
            :
      logs["metric_name"] = metric_value

След като бъде дефинирано персонализирано обратно извикване, свързаният персонализиран показател може да бъде включен в другите обратни извиквания

ckpt_callback = ModelCheckpoint(
    path_to_file,
    monitor="metric_name",
    mode="Specify depending on desired behavior of the metric",  
    save_freq="as above",
)

Това поведение не се ограничава до обмен на данни от персонализирани обратни извиквания към вградените обратни извиквания, но може да бъде разширено във всички обратни извиквания, тъй като обектът 'log' се предава автоматично на всички тях чрез model.fit(). Подобен работен процес ще работи с други обратни извиквания по подразбиране, като EarlyStopping и т.н., където функционалността зависи от персонализирана стойност/метрика.

Внимание: Уверете се, че обратните извиквания са подредени в model.fit() в реда на актуализиране на информацията. В горния пример, ако обратното извикване на ModelCheckpoint е посочено преди персонализираното обратно извикване, то ще работи асинхронно по отношение на персонализирания показател, тъй като ще разглежда стойността на показателя от предишната стъпка.

Следователно тук желаният ред ще бъде както следва:

model.fit(
    train_generator,
         :         ,
    epochs,
    callbacks = [CustomCallback, ckpt_callback]
     )

С това вече сте готови да контролирате обучението на вашия модел за машинно обучение по-гъвкаво.

Ако намирате истории като тези за ценни и искате да ме подкрепите като писател, моля, помислете дали да не се регистрирате за средно членство. Това е $5 на месец и ви осигурява неограничен достъп до статии на Medium. Регистрирането с рефералната връзка ще ми осигури малка комисионна без допълнителни разходи за вас.