Deep Learning with Keras: Melatih Neural Network Dengan Keras [Dengan Kode]
Diterbitkan: 2020-12-24Keras adalah library Python yang menyediakan API untuk bekerja dengan Neural Networks dan kerangka kerja Deep Learning. Keras menyediakan fungsi dan modul yang sangat berguna ketika berhadapan dengan berbagai aplikasi Deep Learning dengan Python.
Pada akhir tutorial ini, Anda akan memiliki pengetahuan berikut:
- Apa itu Keras?
- Keras API
- Melatih Jaringan Syaraf di Keras
Daftar isi
Apa itu Keras?
Untuk melakukan Deep Learning, library yang paling banyak digunakan sebelumnya adalah Tensorflow 1.x yang sulit ditangani oleh pemula. Diperlukan banyak pengkodean untuk hanya membuat jaringan 1 lapisan dasar. Namun, dengan Keras, proses lengkap pembuatan struktur Jaringan Syaraf Tiruan dan kemudian melatih & melacaknya menjadi sangat mudah.
Keras adalah API tingkat tinggi yang dapat berjalan di backend Tensorflow, Theano, dan CNTK. Ini memberi kami kemampuan untuk menjalankan eksperimen menggunakan jaringan saraf menggunakan API tingkat tinggi dan ramah pengguna. Hal ini juga mampu berjalan pada CPU dan GPU.
Keras API
Keras memiliki 10 modul API berbeda yang dimaksudkan untuk menangani pemodelan dan pelatihan jaringan saraf. Mari kita bahas masing-masing untuk memahami apa yang ditawarkan semua Keras.
model
Models API menyediakan fungsionalitas untuk membangun jaringan saraf kompleks dengan menambahkan/menghapus lapisan. Modelnya bisa Sequential, artinya, layer akan ditumpuk secara berurutan dengan input dan output tunggal. Modelnya juga bisa fungsional, artinya, dengan model yang sepenuhnya dapat disesuaikan. Inilah yang paling banyak digunakan di industri.

API juga memiliki modul pelatihan yang menyediakan metode untuk mengkompilasi model bersama dengan pengoptimal dan fungsi kerugian, metode untuk menyesuaikan model, metode untuk mengevaluasi dan memprediksi data baru juga. Selain itu, ia juga memiliki metode untuk pelatihan, pengujian, dan prediksi pada data batch juga. Models API juga memiliki penyimpanan dan serialisasi model.
Lapisan
Lapisan adalah blok bangunan dari setiap jaringan saraf. Layers API menawarkan satu set lengkap metode untuk membangun arsitektur jaringan saraf. Layers API memiliki kelas Lapisan Dasar yang berisi metode yang diperlukan untuk membangun lapisan khusus dengan bobot dan inisialisasi khusus.
Ini berisi kelas Aktivasi Lapisan yang terdiri dari berbagai fungsi aktivasi seperti ReLU, Sigmoid, Tanh, Softmax, dll. Kelas Layer Weight Initializers menawarkan metode untuk menginisialisasi bobot menggunakan cara yang berbeda.
Ini juga terdiri dari kelas Lapisan Inti yang terdiri dari kelas-kelas yang diperlukan untuk menambahkan lapisan inti seperti lapisan Padat, Lapisan Aktivasi, Lapisan Penyematan, dll. Kelas Lapisan Konvolusi menawarkan berbagai metode untuk menambahkan berbagai jenis lapisan Konvolusi. Kelas Pooling Layers berisi metode yang diperlukan untuk berbagai jenis pooling seperti Max Pooling, Average Pooling, Global Max Pooling, dan Global Average Pooling.
Panggilan balik
Callback adalah cara untuk melacak proses pelatihan model. Dengan Callback diaktifkan, berbagai tindakan dapat dilakukan sebelum atau setelah akhir dari sebuah epoch atau batch. Dengan panggilan balik, Anda dapat:
- Pantau metrik pelatihan dengan mencatat metrik di TensorFlow Board
- Menyimpan model ke disk secara berkala
- Berhenti lebih awal jika kerugian tidak berkurang secara signifikan setelah jangka waktu tertentu
- Lihat status internal dan statistik model selama pelatihan
Prapemrosesan Kumpulan Data
Data biasanya dalam format mentah dan terletak di direktori yang diatur dan perlu diproses sebelumnya sebelum dimasukkan ke model untuk pemasangan. Kelas Image Data Preprocessing memiliki banyak fungsi khusus seperti itu. Misalnya, data gambar harus dalam array numerik yang dapat kita gunakan fungsi img_to_array. Atau jika gambar ada di dalam direktori dan subfolder, kita dapat menggunakan fungsi image_dataset_from_directory.
Data Preprocessing API juga memiliki kelas untuk data Time Series dan data teks.
Pengoptimal
Pengoptimal adalah tulang punggung jaringan saraf apa pun. Setiap jaringan saraf bekerja untuk mengoptimalkan fungsi kerugian untuk menemukan bobot terbaik untuk prediksi. Ada beberapa jenis pengoptimal yang mengikuti teknik yang sedikit berbeda untuk menemukan bobot optimal. Semua pengoptimal ini tersedia di API Pengoptimal – SGD, RMSProp, Adam, Adadelta, Adagrad, Adamax, Nadal, FTRL.
kerugian
Fungsi kerugian perlu ditentukan saat menyusun model. Fungsi kerugian ini akan dioptimalkan oleh pengoptimal yang juga diteruskan sebagai parameter dalam metode kompilasi. Tiga kelas kerugian utama adalah: Kerugian Probabilistik, Kerugian Regresi, Kerugian Engsel.
Metrik
Metrik digunakan di setiap model ML untuk mengukur performanya pada data pengujian. Metrik mirip dengan Fungsi Rugi, kecuali bahwa metrik tersebut digunakan pada data uji. Ada banyak metrik Akurasi yang tersedia seperti Akurasi, Akurasi Biner, Akurasi Kategoris, dll. Ini juga berisi metrik Probabilistik seperti Entropi Lintas Biner, Entropi Lintas Kategori, dll. Ada metrik untuk memeriksa positif/negatif palsu juga seperti AUC, Presisi, Recall, dll.
Terlepas dari metrik klasifikasi ini, ia juga memiliki metrik regresi seperti Mean Squared Error, Root Mean Squared Error, Mean Absolute Error, dll.
Baca Juga: Apa Itu Keras dan TensorFlow
Aplikasi Keras
Kelas Aplikasi Keras terdiri dari beberapa model prebuilt bersama dengan bobot yang telah dilatih sebelumnya. Model pra-pelatihan ini digunakan untuk proses Transfer Learning. Model pra-pelatihan ini berbeda tergantung pada arsitektur, jumlah lapisan, bobot yang dapat dilatih, dll. Beberapa di antaranya adalah Xception, VGG16, Resnet50, MobileNet, dll.

Melatih Jaringan Neural dengan Keras
Mari kita pertimbangkan kumpulan data sederhana seperti MNIST yang tersedia di kelas kumpulan data Keras. Kami akan membuat Convolutional Neural Network sekuensial sederhana untuk mengklasifikasikan gambar tulisan tangan angka 0-9.
| #Memuat kumpulan data dari keras.datasets impor mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() |
Menormalkan dataset dengan membagi setiap piksel dengan 255. Juga, diperlukan untuk mengubah gambar menjadi 4 dimensi sebelum memasukkannya ke model CNN.
| x_train = x_train.astype( 'float32' ) x_test = x_test.astype( 'float32' ) x_train /= 255 x_test /= 255 x_train = X_train.reshape(X_train.shape[ 0 ], 28 , 28 , 1 ) x_test = X_test.reshape(X_test.shape[ 0 ], 28 , 28 , 1 ) |
Kita perlu memberi label encode kelas sebelum memasukkannya ke model. Kami akan melakukannya dengan menggunakan kelas Keras' Utils.
| dari keras.utils impor ke_kategorikal
|
Sekarang, kita dapat mulai membuat model menggunakan Sequential API.
| dari keras.models import Sequential dari keras.layers import Conv2D, MaxPool2D, Dense, Flatten, Dropout model = Sequential() model.add(Conv2D(filters= 32 , kernel_size=( 5 , 5 ), activation= 'relu' , input_shape=x_train.shape[ 1 :])) model.add(MaxPool2D(pool_size=( 2 , 2 ))) model.add(Keluar(tingkat= 0.25 )) model.add(Conv2D(filters= 64 , kernel_size=( 3 , 3 ), activation= 'relu' )) model.add(MaxPool2D(pool_size=( 2 , 2 ))) model.add(Keluar(tingkat= 0.25 )) model.tambahkan(Ratakan()) model.add(Padat( 256 , aktivasi= 'relu' )) model.add(Keluar(tingkat= 0.5 )) model.add(Padat( 10 , aktivasi= 'softmax' )) |
Dalam kode di atas, kami mendeklarasikan model sekuensial dan kemudian menambahkan beberapa lapisan ke dalamnya. Lapisan convolutional, diikuti oleh lapisan Max Pooling dan kemudian lapisan putus sekolah untuk regularisasi. Kemudian kita ratakan outputnya menggunakan layer flatten dan layer terakhir adalah layer padat yang terhubung penuh dengan 10 node.
Selanjutnya, kita perlu mengompilasinya dengan melewatkan fungsi kerugian, pengoptimal, dan metrik.
| model.kompilasi( rugi= 'kategoris_lintasentropi' , pengoptimal= 'adam' , metrik=[ 'akurasi' ] ) |
Sekarang kita perlu menambahkan gambar yang diperbesar dari gambar asli untuk meningkatkan set pelatihan dan akurasi model. Kami akan melakukannya menggunakan fungsi ImageDataGenerator.
| dari keras.preprocessing.image impor ImageDataGenerator datagen = ImageDataGenerator( rotasi_rentang= 10 , rentang_zoom= 0.1 , lebar_shift_range= 0.1 , tinggi_pergeseran_rentang= 0,1 ) |
Sekarang setelah model dikompilasi, dan gambar ditambah, kita dapat memulai proses pelatihan. Karena kami telah menggunakan Generator Data Gambar di atas, kami akan menggunakan metode fit_generator daripada hanya fit.

| zaman = 3 batch_ukuran = 32 history = model.fit_generator( datagen.flow(x_train, y_train, batch_size=batch_size), epochs=epochs, validasi_data=(x_test, y_test), langkah_per_epoch=x_train.shape[ 0 ]//batch_size ) |
Keluaran dari proses pelatihan adalah sebagai berikut:

3Sekarang model dilatih dan dapat dievaluasi dengan menjalankannya pada data uji yang tidak terlihat.
Baca Terkait: Deep Learning & Neural Networks dengan Keras
Sebelum kamu pergi
Dalam tutorial ini, kita melihat seberapa baik Keras terstruktur dan membuatnya mudah untuk membangun jaringan saraf yang kompleks. Keras sekarang dibungkus di bawah Tensorflow 2.x yang memberikan lebih banyak fitur. Cobalah lebih banyak contoh seperti itu dan jelajahi fungsi dan fitur Keras.
Jika Anda tertarik untuk mempelajari lebih lanjut tentang pembelajaran mesin, lihat PG Diploma IIIT-B & upGrad dalam Pembelajaran Mesin & AI yang dirancang untuk para profesional yang bekerja dan menawarkan 450+ jam pelatihan ketat, 30+ studi kasus & tugas, IIIT- B Status alumni, 5+ proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.
