Apa itu Keras? API rangkaian neural mendalam menjelaskan

Walaupun rangkaian neural mendalam adalah kemarahan, kerumitan kerangka kerja utama telah menjadi penghalang penggunaannya untuk pemaju yang baru mempelajari pembelajaran mesin. Terdapat beberapa cadangan untuk API tingkat tinggi yang diperbaiki dan dipermudah untuk membangun model rangkaian neural, yang semuanya cenderung serupa dari jarak jauh tetapi menunjukkan perbezaan pada pemeriksaan yang lebih dekat.

Keras adalah salah satu API rangkaian neural peringkat tinggi yang terkemuka. Ia ditulis dalam Python dan menyokong pelbagai mesin pengiraan rangkaian saraf belakang.

Keras dan TensorFlow

Memandangkan projek TensorFlow telah menerima pakai Keras sebagai API peringkat tinggi untuk melepaskan TensorFlow 2.0 yang akan datang, Keras kelihatan sebagai seorang pemenang, jika tidak semestinya yang pemenang. Dalam artikel ini, kami akan meneroka prinsip dan pelaksanaan Keras, dengan tujuan untuk memahami mengapa ini merupakan peningkatan berbanding API pembelajaran mendalam tahap rendah.

Walaupun di TensorFlow 1.12, tutorial rasmi Bermula dengan TensorFlow menggunakan API Keras peringkat tinggi yang disematkan di TensorFlow, tf.keras . Sebaliknya, TensorFlow Core API memerlukan kerja dengan grafik kompensasi TensorFlow, tensor, operasi, dan sesi, yang sebahagiannya sukar difahami ketika anda baru mula bekerja dengan TensorFlow. Terdapat beberapa kelebihan untuk menggunakan TensorFlow Core API tahap rendah, kebanyakan ketika melakukan debug, tetapi untungnya anda dapat mencampurkan TensorFlow API tingkat tinggi dan rendah seperti yang diperlukan.

Prinsip Keras

Keras diciptakan untuk menjadi mesra pengguna, modular, mudah diperluas, dan bekerjasama dengan Python. API "direka untuk manusia, bukan mesin," dan "mengikuti amalan terbaik untuk mengurangkan beban kognitif."

Lapisan neural, fungsi biaya, pengoptimum, skema inisialisasi, fungsi pengaktifan, dan skema regularisasi adalah modul mandiri yang dapat anda gabungkan untuk membuat model baru. Modul baru mudah ditambah, kerana kelas dan fungsi baru. Model ditentukan dalam kod Python, bukan fail konfigurasi model yang terpisah.

Kenapa Keras?

Sebab terbesar untuk menggunakan Keras berpunca dari prinsip panduannya, terutamanya alasan untuk menjadi mesra pengguna. Di luar kemudahan pembelajaran dan kemudahan pembuatan model, Keras menawarkan kelebihan penggunaan yang luas, sokongan untuk pelbagai pilihan penggunaan pengeluaran, penyatuan dengan sekurang-kurangnya lima mesin belakang (TensorFlow, CNTK, Theano, MXNet, dan PlaidML), dan sokongan kuat untuk pelbagai GPU dan latihan yang diedarkan. Plus, Keras disokong oleh Google, Microsoft, Amazon, Apple, Nvidia, Uber, dan lain-lain.

Keras hujung belakang

Keras tepat tidak melakukan operasi tahap rendah sendiri, seperti produk tensor dan konvolusi; ia bergantung pada mesin belakang untuk itu. Walaupun Keras menyokong pelbagai mesin belakang, bahagian belakang utamanya (dan lalai) adalah TensorFlow, dan penyokong utamanya adalah Google. API Keras dibungkus dalam TensorFlow sebagai tf.keras, yang seperti yang disebutkan sebelumnya akan menjadi TensorFlow API utama pada TensorFlow 2.0.

Untuk menukar hujung belakang, cukup edit $HOME/.keras/keras.jsonfail anda dan tentukan nama belakang yang berbeza, seperti theanoatau CNTK. Sebagai alternatif, anda boleh mengganti hujung belakang yang dikonfigurasi dengan menentukan pemboleh ubah persekitaran KERAS_BACKEND, sama ada di cangkang anda atau dalam kod Python anda menggunakan os.environ["KERAS_BACKEND"]harta tanah.

Model Keras

The Digital adalah teras Keras struktur data. Terdapat dua utama jenis model yang terdapat di Keras: yang Sequentialmodel, dan Modelkelas digunakan dengan API berfungsi.

Model Keras Berurutan

The Sequentialmodel adalah timbunan linear lapisan dan lapisan boleh digambarkan sangat semata-mata. Berikut adalah contoh dari dokumentasi Keras yang menggunakan model.add()untuk menentukan dua lapisan padat dalam Sequentialmodel:

import keras

dari keras.models import Sequential

dari keras.layers import Dense

#Ciptakan model Sequential dengan lapisan Dense, menggunakan kaedah tambah

#Dense melaksanakan operasi:

# output = pengaktifan (titik (input, kernel) + bias)

#Unit adalah dimensi ruang output untuk lapisan,

# yang sama dengan bilangan unit tersembunyi

#Fungsi pengaktifan dan kehilangan boleh ditentukan mengikut rentetan atau kelas

model.add (Dense (unit = 10, pengaktifan = "softmax"))

# Kaedah penyusunan mengkonfigurasi proses pembelajaran model

              pengoptimum = "sgd",

              metrik = ['ketepatan'])

# Kaedah sesuai melakukan latihan secara berkumpulan

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

# Kaedah penilaian mengira kerugian dan metrik

# untuk model terlatih

# Kaedah ramalan menggunakan model terlatih untuk input

# untuk menghasilkan output

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

Komen dalam kod di atas patut dibaca. Perlu juga diperhatikan betapa sedikitnya kod dalam kod sebenar berbanding, katakanlah, API TensorFlow tahap rendah. Setiap definisi lapisan memerlukan satu baris kod, penyusunan (definisi proses pembelajaran) mengambil satu baris kod, dan pemasangan (latihan), menilai (mengira kerugian dan metrik), dan meramalkan output dari model yang dilatih masing-masing mengambil satu baris kod .

API berfungsi Keras

Model Keras Sequential adalah ringkas tetapi terhad 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 berfungsi menggunakan lapisan yang sama dengan model Sequential tetapi memberikan lebih banyak fleksibiliti dalam menyatukannya. Dalam API berfungsi anda menentukan lapisan terlebih dahulu, dan kemudian membuat Model, menyusunnya, dan pasangkan (latih). Penilaian dan ramalan pada dasarnya sama seperti dalam model Sequential, jadi telah dihilangkan dalam contoh kod di bawah.

dari keras.layers import Input, Dense

dari keras.models import Model

# Ini mengembalikan tensor

# contoh lapisan boleh dipanggil pada tensor, dan mengembalikan tensor

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

ramalan = Padat (10, pengaktifan = "softmax") (x)

# Ini mencipta model yang merangkumi

# lapisan Input dan tiga lapisan Dense

model.compile (optimizer = 'rmsprop',

              kerugian = "ategorical_crossentropy ",

              metrik = ['ketepatan'])

model.fit (data, label)  # memulakan latihan

Lapisan keras

Dalam contoh sebelumnya kami hanya menggunakan Denselapisan. Keras mempunyai banyak pilihan jenis lapisan yang telah ditentukan, dan juga menyokong penulisan lapisan anda sendiri.

Lapisan teras merangkumi Dense(produk titik ditambah bias), Activation(fungsi pemindahan atau bentuk neuron), Dropout(tetapkan pecahan unit input secara rawak ke 0 pada setiap kemas kini latihan untuk mengelakkan pemasangan berlebihan), Lambda(bungkus ekspresi sewenang-wenang sebagai Layerobjek), dan beberapa yang lain . Lapisan konvolusi (penggunaan penapis untuk membuat peta ciri) dijalankan dari 1D hingga 3D dan merangkumi varian yang paling biasa, seperti pemangkasan dan lapisan konvolusi yang ditransfer untuk setiap dimensi. Konvolusi 2D, yang diilhami oleh fungsi korteks visual, biasanya digunakan untuk pengecaman gambar.

Lapisan pooling (downscaling) dijalankan dari 1D hingga 3D dan merangkumi varian yang paling biasa, seperti penggabungan maksimum dan rata-rata. Lapisan yang disambungkan secara tempatan bertindak seperti lapisan konvolusi, kecuali beratnya tidak dibahagi. Lapisan berulang merangkumi sederhana (penyambungan sepenuhnya yang disambungkan), berpagar, LSTM, dan lain-lain; ini berguna untuk pemprosesan bahasa, antara aplikasi lain. Lapisan bising membantu mengelakkan terlalu banyak.

Set data Keras

Keras membekalkan tujuh daripada kumpulan data sampel pembelajaran mendalam biasa melalui keras.datasetskelas. Itu termasuk gambar warna kecil cifar10 dan cifar100, ulasan filem IMDB, topik berita Reuters, digit tulisan tangan MNIST, gambar fesyen MNIST, dan harga perumahan Boston.

Aplikasi dan contoh Keras

Keras juga membekalkan sepuluh model terkenal, yang disebut Keras Applications, yang telah diprainstitusi terhadap ImageNet: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. Anda boleh menggunakannya untuk meramalkan klasifikasi gambar, mengekstrak ciri daripadanya, dan memperbaik model pada kumpulan kelas yang berbeza.

By the way, memperbaik model yang ada adalah cara yang baik untuk mempercepat latihan. Sebagai contoh, anda boleh menambah lapisan seperti yang anda mahukan, membekukan lapisan asas untuk melatih lapisan baru, kemudian membekukan beberapa lapisan asas untuk menyempurnakan latihan. Anda boleh membekukan lapisan dengan menetapkan layer.trainable = False.

Repositori contoh Keras mengandungi lebih daripada 40 model sampel. Mereka merangkumi model penglihatan, teks dan urutan, dan model generatif.

Menyebarkan Keras

Model Keras dapat digunakan di sebilangan besar platform, mungkin lebih banyak daripada kerangka pembelajaran mendalam lainnya. Itu termasuk iOS, melalui CoreML (disokong oleh Apple); Android, melalui masa operasi TensorFlow Android; dalam penyemak imbas, melalui Keras.js dan WebDNN; di Google Cloud, melalui TensorFlow-Serving; di hujung belakang web Python; pada JVM, melalui import model DL4J; dan pada Raspberry Pi.

Untuk memulakan Keras, baca dokumentasi, periksa repositori kod, pasang TensorFlow (atau mesin backend lain) dan Keras, dan cuba tutorial Bermula untuk model Keras Sequential. Dari sana anda boleh maju ke tutorial lain, dan akhirnya meneroka Contoh Keras.