Declarații și note ale lui Andrey - Definiții ale modelului Keras reutilizabile
Modelele din Keras moștenesc din clasa keras.models.Model. Este un container pentru straturi, dar poate include și alte modele ca elemente de construcție. Înainte de a fi instruit sau utilizat pentru predicție, un model Keras trebuie „compilat”, ceea ce implică specificarea funcției de pierdere și a optimizatorului. Am constatat că, pentru a îmbunătăți reutilizarea codului de definiție a modelului, există câteva principii de bază de urmat:

- Implementați definițiile modelelor ca funcții luând hiper-parametri ca intrare și returnând un obiect Model.
- Păstrați definiția modelului separat de compilare și instruire.
- Faceți ca straturile de nivel superior să fie opționale.
- Cunoașteți-vă API-ul funcțional Keras.
Nu m-aș aștepta ca cineva să dea acest sfat de la sine înțeles, prin urmare, să trecem la justificarea din spatele fiecărui punct.
Definițiile modelului sunt funcții care iau ca parametri hiper-parametrii¶
Există trei moduri populare de definire a modelelor Keras în cod:
- Loc aleatoriu aproape de codul de antrenament. Acest lucru este excelent pentru explorare atunci când faci ceva rapid într-un notebook și mai puțin grozav când vrei o bază solidă de cod și artefacte reutilizabile.
- Înfășurat într-o clasă Python cu constructor și metode. Este o alternativă viabilă, însă nu reușesc să văd cum simplul act de a crea o arhitectură de rețea bazată pe un număr de hiper-parametri merită o clasă. Nu există o stare de păstrat și singurul comportament este să construiești un model.
- Ca o funcție luând hiper-parametrii modelului (formele de intrare/ieșire, numărul și dimensiunea straturilor, parametrii de regularizare etc.) ca argumente și returnând un obiect Model.
Pachetul keras.applications are o colecție de modele Deep Learning care urmează a treia opțiune.
Vă recomand să aveți cât mai puțini parametri obligatorii și să setați restul la valori implicite sensibile. Acesta este modul în care consider că Keras API este conceput în general, deci este bine să îl extindeți și la codul spațiului utilizatorilor.
Definiți modelul separat de compilare și instruire¶
Argumentul este următorul: având modelul definit separat, putem decide ulterior să îl antrenăm cu un optimizator sau altul, precum și să „înghețăm” părțile modelului.