Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengekstrak Pengaktifan daripada Lapisan Tertentu dalam Model Keras?

Bagaimana untuk Mengekstrak Pengaktifan daripada Lapisan Tertentu dalam Model Keras?

Patricia Arquette
Patricia Arquetteasal
2024-11-30 02:49:14778semak imbas

How to Extract Activations from Specific Layers in a Keras Model?

Cara Mendapatkan Output Setiap Lapisan dalam Keras

Apabila bekerja dengan Rangkaian Neural Dalam (DNN), selalunya berguna untuk memeriksa pengaktifan lapisan individu. Ini boleh membantu anda memahami gelagat model dan mengenal pasti isu yang berpotensi. Keras, perpustakaan DNN yang popular untuk Python, menyediakan cara mudah untuk mencapai matlamat ini.

Menggunakan Antara Muka Lapisan Model

Model Keras dibina sebagai urutan lapisan, setiap satu menjalankan operasi tertentu pada input. Untuk mendapatkan semula output lapisan tertentu, anda boleh menggunakan sintaks berikut:

model.layers[index].output

di mana indeks ialah indeks lapisan yang anda mahu keluarkan keluaran. Contohnya, untuk mendapatkan output lapisan konvolusi kedua dalam coretan kod yang disediakan:

conv_output = model.layers[2].output

Mendapatkan Output daripada Semua Lapisan

Untuk mengekstrak output daripada semua lapisan dalam model, anda boleh menggunakan pemahaman senarai:

outputs = [layer.output for layer in model.layers]

Mencipta Penilaian Fungsi

Untuk benar-benar menilai output lapisan, Keras menyediakan satu set fungsi yang dipanggil K.function. Fungsi ini mengambil sebagai input senarai tensor dan mengembalikan senarai output.

Untuk mencipta fungsi penilaian bagi setiap output lapisan, anda boleh melakukan perkara berikut:

from keras import backend as K

functors = [K.function([inp, K.learning_phase()], [out]) for out in outputs]

di mana inp berada tensor input, K.learning_phase() ialah bendera untuk menunjukkan sama ada model dalam mod latihan atau inferens, dan keluar ialah output bagi lapisan.

Menilai Output Lapisan

Kini, anda boleh menilai output lapisan dengan menghantar data input kepada fungsi penilaian yang sepadan:

test = np.random.random(input_shape)[np.newaxis,...]
layer_outs = [func([test, 1.]) for func in functors]
print layer_outs

Ingat untuk menetapkan K. learning_phase() hingga 1 jika mana-mana lapisan dalam model anda termasuk keciciran atau penormalan kelompok untuk mensimulasikan latihan mod.

Mengoptimumkan Proses

Pendekatan yang lebih cekap untuk menilai output lapisan ialah menggunakan satu fungsi yang mengembalikan senarai output untuk semua lapisan:

from keras import backend as K

functor = K.function([inp, K.learning_phase()], outputs)

Ini mengurangkan pemindahan data dan overhed pengiraan yang dikaitkan dengan penilaian fungsi individu.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Pengaktifan daripada Lapisan Tertentu dalam Model Keras?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn