Apa itu Keras? API jaringan saraf dalam menjelaskan

Meskipun jaringan neural dalam sedang populer, kerumitan framework utama telah menjadi penghalang penggunaannya bagi developer yang baru mengenal machine learning. Ada beberapa proposal untuk API tingkat tinggi yang disempurnakan dan disederhanakan untuk membangun model jaringan neural, yang semuanya cenderung terlihat serupa dari kejauhan, tetapi menunjukkan perbedaan pada pemeriksaan lebih dekat.

Keras adalah salah satu API jaringan neural tingkat tinggi terkemuka. Itu ditulis dengan Python dan mendukung beberapa mesin komputasi jaringan saraf back-end.

Keras dan TensorFlow

Mengingat bahwa proyek TensorFlow telah mengadopsi Keras sebagai API tingkat tinggi untuk mendatang TensorFlow 2.0 rilis, Keras terlihat menjadi sebuah pemenang, jika tidak selalu yang pemenang. Dalam artikel ini, kita akan menjelajahi prinsip-prinsip dan implementasi Keras, dengan tujuan untuk memahami mengapa ini merupakan peningkatan dari API pembelajaran dalam tingkat rendah.

Bahkan di TensorFlow 1.12, tutorial resmi Memulai TensorFlow menggunakan API Keras tingkat tinggi yang disematkan di TensorFlow, tf.keras . Sebaliknya, TensorFlow Core API memerlukan pengerjaan dengan grafik komputasi, tensor, operasi, dan sesi TensorFlow, beberapa di antaranya mungkin sulit dipahami saat Anda baru mulai menggunakan TensorFlow. Ada beberapa keuntungan menggunakan TensorFlow Core API level rendah, sebagian besar saat melakukan debug, tetapi untungnya Anda dapat mencampur TensorFlow API level tinggi dan level rendah sesuai kebutuhan.

Prinsip keras

Keras dibuat agar ramah pengguna, modular, mudah diperluas, dan bekerja dengan Python. API tersebut "dirancang untuk manusia, bukan mesin", dan "mengikuti praktik terbaik untuk mengurangi beban kognitif".

Lapisan saraf, fungsi biaya, pengoptimal, skema inisialisasi, fungsi aktivasi, dan skema regularisasi adalah modul mandiri yang dapat Anda gabungkan untuk membuat model baru. Modul baru mudah ditambahkan, sebagai kelas dan fungsi baru. Model didefinisikan dalam kode Python, bukan file konfigurasi model yang terpisah.

Mengapa Keras?

Alasan terbesar untuk menggunakan Keras berasal dari prinsip panduannya, terutama tentang ramah pengguna. Selain kemudahan pembelajaran dan kemudahan pembuatan model, Keras menawarkan keuntungan dari adopsi yang luas, dukungan untuk berbagai pilihan penerapan produksi, integrasi dengan setidaknya lima mesin back-end (TensorFlow, CNTK, Theano, MXNet, dan PlaidML), dan dukungan kuat untuk banyak GPU dan pelatihan terdistribusi. Ditambah, Keras didukung oleh Google, Microsoft, Amazon, Apple, Nvidia, Uber, dan lainnya.

Keras kembali berakhir

Keras yang tepat tidak melakukan operasi tingkat rendahnya sendiri, seperti produk tensor dan konvolusi; itu bergantung pada mesin back-end untuk itu. Meskipun Keras mendukung banyak mesin back-end, back end utama (dan default) adalah TensorFlow, dan pendukung utamanya adalah Google. API Keras hadir dalam paket TensorFlow as tf.keras, yang seperti yang disebutkan sebelumnya akan menjadi API TensorFlow utama sejak TensorFlow 2.0.

Untuk mengubah ujung belakang, cukup edit $HOME/.keras/keras.jsonfile Anda dan tentukan nama ujung belakang yang berbeda, seperti theanoatau CNTK. Sebagai alternatif, Anda dapat mengganti back end yang dikonfigurasi dengan menentukan variabel lingkungan KERAS_BACKEND, baik di shell Anda atau dalam kode Python Anda menggunakan os.environ["KERAS_BACKEND"]properti.

Model keras

The Model adalah inti struktur data Keras. Ada dua tipe utama model yang tersedia di Keras: Sequentialmodel, dan Modelkelas yang digunakan dengan API fungsional.

Model Keras Sequential

The Sequentialmodel adalah tumpukan linear lapisan, dan lapisan dapat digambarkan sangat sederhana. Berikut adalah contoh dari dokumentasi Keras yang digunakan model.add()untuk menentukan dua lapisan padat dalam Sequentialmodel:

impor keras

dari keras.models import Sequential

dari keras.layers import Dense

#Create Sequential model with Dense layers, menggunakan metode add

#Dense mengimplementasikan operasi:

# keluaran = aktivasi (titik (masukan, kernel) + bias)

#Units adalah dimensi ruang keluaran untuk lapisan,

# yang sama dengan jumlah unit tersembunyi

Fungsi #Activation dan loss dapat ditentukan oleh string atau kelas

model.add (Padat (unit = 10, aktivasi = "softmax"))

#Metode kompilasi mengonfigurasi proses pembelajaran model

              pengoptimal = "sgd",

              metrik = ['akurasi'])

# Metode fit melakukan pelatihan dalam batch

# x_train dan y_train adalah array Numpy --seperti di Scikit-Learn API.

#Metode evaluasi menghitung kerugian dan metrik

# untuk model terlatih

#Metode prediksi menerapkan model terlatih ke input

# untuk menghasilkan keluaran

kelas = model.predict (x_test, batch_size = 128)

Komentar dalam kode di atas layak dibaca. Perlu juga dicatat betapa sedikit kekurangan yang ada dalam kode sebenarnya dibandingkan dengan, katakanlah, TensorFlow API level rendah. Setiap definisi lapisan membutuhkan satu baris kode, kompilasi (definisi proses pembelajaran) mengambil satu baris kode, dan menyesuaikan (pelatihan), mengevaluasi (menghitung kerugian dan metrik), dan memprediksi keluaran dari model yang dilatih masing-masing mengambil satu baris kode .

API fungsional Keras

Model Keras Sequential sederhana namun terbatas dalam topologi model. API fungsional Keras berguna untuk membuat model yang kompleks, seperti model multi-input / multi-output, grafik asiklik terarah (DAG), dan model dengan lapisan bersama.

API fungsional menggunakan lapisan yang sama dengan model Sequential tetapi memberikan lebih banyak fleksibilitas dalam menyatukannya. Dalam API fungsional Anda menentukan lapisan terlebih dahulu, lalu membuat Model, mengkompilasinya, dan menyesuaikan (melatih) itu. Evaluasi dan prediksi pada dasarnya sama dengan model Sequential, jadi kode contoh di bawah ini telah dihilangkan.

dari keras.layers import Input, Dense

dari keras.models import Model

# Ini mengembalikan tensor

# Sebuah instance lapisan dapat dipanggil pada tensor, dan mengembalikan tensor

x = Padat (64, aktivasi = "relu") (x)

prediksi = Padat (10, aktivasi = "softmax") (x)

# Ini menciptakan model yang mencakup

# lapisan Input dan tiga lapisan Dense

model.compile (pengoptimal = 'rmsprop',

              loss = "kategorikal_kategori",

              metrik = ['akurasi'])

model.fit (data, label)  # memulai pelatihan

Lapisan keras

Pada contoh sebelumnya kami hanya menggunakan Denselapisan. Keras memiliki banyak pilihan jenis lapisan standar, dan juga mendukung penulisan lapisan Anda sendiri.

Lapisan inti meliputi Dense(produk titik plus bias), Activation(fungsi transfer atau bentuk neuron), Dropout(secara acak menetapkan sebagian kecil unit input ke 0 pada setiap pembaruan pelatihan untuk menghindari overfitting), Lambda(membungkus ekspresi arbitrer sebagai Layerobjek), dan beberapa lainnya . Lapisan konvolusi (penggunaan filter untuk membuat peta fitur) berjalan dari 1D ke 3D dan menyertakan varian yang paling umum, seperti memotong dan memindahkan lapisan konvolusi untuk setiap dimensi. Konvolusi 2D, yang terinspirasi oleh fungsionalitas korteks visual, biasanya digunakan untuk pengenalan gambar.

Lapisan penggabungan (penurunan skala) dijalankan dari 1D ke 3D dan menyertakan varian yang paling umum, seperti penggabungan maks dan rata-rata. Lapisan yang terhubung secara lokal bertindak seperti lapisan konvolusi, kecuali bobotnya tidak dibagi. Lapisan berulang termasuk sederhana (perulangan tersambung sepenuhnya), berpagar, LSTM, dan lainnya; ini berguna untuk pemrosesan bahasa, di antara aplikasi lainnya. Lapisan kebisingan membantu menghindari overfitting.

Set data Keras

Keras memasok tujuh dari kumpulan data sampel deep learning umum melalui keras.datasetskelas. Itu termasuk gambar berwarna kecil cifar10 dan cifar100, ulasan film IMDB, topik berita Reuters, angka tulisan tangan MNIST, gambar mode MNIST, dan harga rumah di Boston.

Aplikasi dan contoh keras

Keras juga memasok sepuluh model terkenal, yang disebut Aplikasi Keras, yang dilatih sebelumnya terhadap ImageNet: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. Anda dapat menggunakannya untuk memprediksi klasifikasi gambar, mengekstrak fitur darinya, dan menyempurnakan model pada sekumpulan kelas yang berbeda.

Ngomong-ngomong, menyempurnakan model yang ada adalah cara yang baik untuk mempercepat pelatihan. Misalnya, Anda dapat menambahkan lapisan sesuai keinginan, membekukan lapisan dasar untuk melatih lapisan baru, lalu mencairkan beberapa lapisan dasar untuk menyempurnakan pelatihan. Anda dapat membekukan lapisan dengan mengatur layer.trainable = False.

Repositori contoh Keras berisi lebih dari 40 model sampel. Mereka mencakup model vision, teks dan urutan, dan model generatif.

Menerapkan Keras

Model Keras dapat diterapkan di berbagai platform, mungkin lebih dari kerangka pembelajaran mendalam lainnya. Itu termasuk iOS, melalui CoreML (didukung oleh Apple); Android, melalui runtime Android TensorFlow; di browser, melalui Keras.js dan WebDNN; di Google Cloud, melalui TensorFlow-Serving; di bagian belakang aplikasi web Python; di JVM, melalui impor model DL4J; dan di Raspberry Pi.

Untuk memulai dengan Keras, baca dokumentasinya, periksa repositori kode, instal TensorFlow (atau mesin backend lainnya) dan Keras, dan coba tutorial Memulai untuk model Keras Sequential. Dari sana Anda dapat melanjutkan ke tutorial lain, dan akhirnya menjelajahi Contoh Keras.