Mašīnmācīšanās modeļa ielāde ar pielāgotiem objektiem ir svarīgs izstrādes procesa elements. Tas ir vēl svarīgāk, ja mēs modelī strādājam ar priekšapstrādes funkcijām, veidojam pielāgotus slāņus vai citus pielāgotus objektus.
Ja modelī tiek izmantoti pielāgoti slāņi vai funkcijas, to nevar saglabāt un ielādēt tāpat kā parasto modeli, jo šīs pielāgotās daļas netiks atpazītas. Tikai tad, ja mēs skaidri nepaziņojam savai programmai, kas ir šīs pielāgotās daļas.
Šis process var būt nedaudz sarežģīts, taču neuztraucieties! Šajā rakstā mēs sīkāk aplūkosim modeļa ielādi ar pielāgotiem objektiem Python valodā, izmantojot Keras. Mēs rūpīgi aplūkosim problēmu, risinājumu un soli pa solim sniegsim Python koda aprakstu.
Problēmas izpratne
Lietojot Keras, modeļa izveide un apmācība parasti ir vienkārša. Problēmas rodas, ieviešot pielāgotus slāņus, metriku vai citus objektus. Tie var būt nepieciešami noteiktām lietojumprogrammām, taču tie pēc būtības izmanto lietotāja definētu Python kodu.
def custom_function(x):
return x+1
Šo “custom_function” modelī var izmantot kā pielāgotu metriku:
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=[custom_function])
Bet, ja mēs tagad mēģinām saglabāt un ielādēt šo modeli:
model.save('path_to_my_model.h5')
del model
model = keras.models.load_model('path_to_my_model.h5')
Mēs saskaramies ar kļūdu:
ValueError: nezināma metrikas funkcija: custom_function
risinājums
Risinājums ir iekļaut pielāgoto objektu vārdnīcu, ielādējot modeli. Vārdnīcai ir jāatbilst funkcijas nosaukumam faktiskajai funkcijai.
Šeit nepieciešamās izmaiņas ir norādīt funkcijas nosaukumu un tās faktisko ieviešanu vārdnīcā.
model = keras.models.load_model('path_to_my_model.h5',
custom_objects={'custom_function': custom_function})
Soli pa solim koda skaidrojums
Pielāgotās funkcijas noteikšana:
Pirmais solis ietver mūsu pielāgotās funkcijas definēšanu, kas var būt slānis, metrika, aktivizācijas funkcija vai jebkas cits, kas tika izmantots modelī.
Modeļa kompilēšana ar pielāgoto funkciju:
Mēs izmantojam pielāgoto funkciju kā metriku, veidojot modeli. Ja mūsu pielāgotā funkcija būtu slānis vai aktivizācijas funkcija, tā tiktu izmantota līdzīgā veidā, definējot modeļa arhitektūru.
Modeļa saglabāšana:
Pēc apmācības mēs saglabājam savu modeli turpmākai lietošanai, izmantojot funkciju model.save().
Modeļa ielāde:
Kad modelis ir jāizmanto vēlreiz, mēs to ielādējam, izmantojot funkciju keras.models.load_model(). Tomēr mums ir arī jānodod vārdnīca parametrā "custom_objects", kur atslēgas ir mūsu pielāgotās funkcijas nosaukumi, bet vērtības ir pati funkcija.
Rezumējot, modeļu ielāde ar pielāgotiem objektiem sākumā var šķist sarežģīta, taču, sekojot līdzi šiem objektiem un nodrošinot, ka tie ir norādīti ielādes laikā, mēs nodrošinām savu mašīnmācīšanās darbplūsmu vienmērīgu un elastīgu. Tādējādi neatkarīgi no tā, vai jūs meklējat unikālus veidus, kā optimizēt savus slāņus vai izmēģināt novatoriskas funkcijas, pielāgoti objekti jums netraucēs.