Selesai: eksport model keras pada zaman tertentu

Kemaskini terakhir: 09/25/2023

Keras ialah pustaka rangkaian neural sumber terbuka yang ditulis dalam Python. Ia mampu berjalan di atas TensorFlow, Microsoft Cognitive Toolkit, R, Theano atau PlaidML. Salah satu manfaat penting Keras ialah membenarkan pembangun mengeksport model pada zaman tertentu, yang boleh menjadi aset yang hebat dalam penalaan model dan penilaian prestasi.

Masalah

Apabila melatih model pembelajaran mesin, kami biasanya memantau kehilangan atau prestasi fungsi metrik untuk beberapa data pengesahan. Epok yang berbeza boleh menghasilkan prestasi model yang berbeza. Kadangkala, hasil terbaik dicapai pada zaman yang tidak sepadan dengan penghujung proses latihan. Dalam situasi sedemikian, ia akan berguna jika kita boleh menyimpan/mengeksport model keras pada zaman tertentu.

Penyelesaian

Penyelesaian kepada masalah ini terletak pada Keras Callbacks. Panggilan Balik ialah objek (contoh kelas yang melaksanakan kaedah khusus) yang dihantar kepada model dalam panggilan untuk dimuatkan dan yang dipanggil oleh model pada pelbagai titik semasa latihan. Ia mempunyai akses kepada semua data yang tersedia tentang keadaan model dan prestasinya.

Fungsi panggil balik tersuai membolehkan kami menentukan tindakan pada pelbagai peringkat latihan, seperti pada permulaan atau penghujung zaman, sebelum atau selepas satu kelompok, dsb. Satu tindakan sedemikian mungkin untuk menyimpan model pada zaman tertentu.

Penjelasan Langkah demi langkah Kod

Pertama, kami mentakrifkan panggilan balik tersuai untuk menyimpan model pada zaman tertentu.

class CustomSaver(keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs={}):
        if epoch == 9:  # or save after some epoch, each k-th epoch etc.
            self.model.save("model_{}.hd5".format(epoch))

Seterusnya, kami menambah panggilan balik ini pada proses pemasangan model.

model = ...  # create model
model.compile(optimizer='...', loss='...')  # compile model

saver = CustomSaver()
model.fit(..., callbacks=[saver]) # put your X_train, Y_train ...

Dalam kod di atas, kami mencipta contoh kelas CustomSaver, dan kemudian menyerahkannya kepada kaedah muat model sebagai sebahagian daripada senarai panggil balik.

Dengan mengubah suai keadaan "jika" dalam kaedah 'on_epoch_end' kami, kami boleh membuat panggilan balik disimpan selepas setiap 'k' zaman, atau apabila syarat tertentu dipenuhi.

Perpustakaan Keras dan Fungsinya

Reka bentuk Keras yang anggun dan mesra pengguna memudahkan penciptaan dan pengubahsuaian model pembelajaran mendalam. Ia disertakan dengan beberapa alatan, seperti kelas Sequential dan Model untuk membina model, pelbagai lapisan untuk rangkaian saraf (Convolutional, Pooling, Dense, dll.), dan panggilan balik untuk memantau latihan.

Salah satu aspek panggilan balik yang paling berguna ialah menghentikan latihan lebih awal atau menyimpan model terbaik mengikut prestasi pengesahan. Ia adalah ciri yang sering ditanya bahawa Keras sudah mengandungi panggilan balik terbina dalam untuk mereka, yang dikenali sebagai ModelCheckpoint dan EarlyStopping.

Itu sahaja! Sekarang gunakan pengetahuan ini pada senario anda dan simpan model Keras pada zaman yang menawarkan prestasi terbaik. Selamat menjalani latihan model!

Related posts: