Προγραμματισμός

Τι είναι το Keras; Το βαθύ νευρωνικό δίκτυο API εξήγησε

Ενώ τα βαθιά νευρωνικά δίκτυα είναι όλη η οργή, η πολυπλοκότητα των κύριων πλαισίων ήταν ένα εμπόδιο στη χρήση τους για προγραμματιστές νέους στη μηχανική μάθηση. Υπήρξαν αρκετές προτάσεις για βελτιωμένα και απλουστευμένα API υψηλού επιπέδου για την κατασκευή μοντέλων νευρωνικών δικτύων, τα οποία τείνουν να μοιάζουν από απόσταση αλλά δείχνουν διαφορές σε στενότερη εξέταση.

Το Keras είναι ένα από τα κορυφαία API νευρωνικών δικτύων υψηλού επιπέδου. Είναι γραμμένο σε Python και υποστηρίζει πολλαπλούς υπολογιστές νευρωνικών δικτύων back-end.

Keras και TensorFlow

Δεδομένου ότι το έργο TensorFlow έχει υιοθετήσει την Keras ως API υψηλού επιπέδου για την επερχόμενη έκδοση TensorFlow 2.0, η Keras φαίνεται να είναι ένα νικητής, αν όχι απαραίτητα ο νικητής. Σε αυτό το άρθρο, θα διερευνήσουμε τις αρχές και την εφαρμογή του Keras, με σκοπό να κατανοήσουμε γιατί είναι μια βελτίωση σε σχέση με τα API βαθιάς μάθησης.

Ακόμα και στο TensorFlow 1.12, το επίσημο πρόγραμμα εκκίνησης με το TensorFlow χρησιμοποιεί το API Keras υψηλού επιπέδου που είναι ενσωματωμένο στο TensorFlow, tf.keras. Αντίθετα, το TensorFlow Core API απαιτεί συνεργασία με υπολογιστικά γραφήματα TensorFlow, τεντωτές, λειτουργίες και περιόδους σύνδεσης, μερικά από τα οποία μπορεί να είναι δύσκολο να κατανοηθούν όταν μόλις αρχίζετε να εργάζεστε με το TensorFlow. Υπάρχουν μερικά πλεονεκτήματα στη χρήση του TensorFlow Core API χαμηλού επιπέδου, κυρίως κατά τον εντοπισμό σφαλμάτων, αλλά ευτυχώς μπορείτε να συνδυάσετε τα API TensorFlow υψηλού επιπέδου και χαμηλού επιπέδου όπως απαιτείται.

Αρχές του Κερά

Το Keras δημιουργήθηκε για να είναι φιλικό προς το χρήστη, αρθρωτό, εύκολο να επεκταθεί και να συνεργαστεί με την Python. Το API «σχεδιάστηκε για ανθρώπους, όχι για μηχανές» και «ακολουθεί τις βέλτιστες πρακτικές για τη μείωση του γνωστικού φορτίου».

Τα νευρικά επίπεδα, οι λειτουργίες κόστους, οι βελτιστοποιητές, τα σχήματα αρχικοποίησης, οι λειτουργίες ενεργοποίησης και τα σχήματα κανονικοποίησης είναι όλα αυτόνομα τμήματα που μπορείτε να συνδυάσετε για να δημιουργήσετε νέα μοντέλα. Οι νέες ενότητες είναι απλές στην προσθήκη, όπως νέες τάξεις και λειτουργίες. Τα μοντέλα ορίζονται στον κώδικα Python και όχι σε ξεχωριστά αρχεία διαμόρφωσης μοντέλου.

Γιατί ο Κεράς;

Οι μεγαλύτεροι λόγοι για τη χρήση του Keras απορρέουν από τις κατευθυντήριες αρχές του, κυρίως για το ότι είναι φιλικό προς τον χρήστη. Πέρα από την ευκολία μάθησης και την ευκολία δημιουργίας μοντέλων, η Keras προσφέρει τα πλεονεκτήματα της ευρείας υιοθέτησης, της υποστήριξης για ένα ευρύ φάσμα επιλογών ανάπτυξης παραγωγής, της ενσωμάτωσης με τουλάχιστον πέντε κινητήρες υποστήριξης (TensorFlow, CNTK, Theano, MXNet και PlaidML), και ισχυρή υποστήριξη για πολλαπλές GPU και κατανεμημένη εκπαίδευση. Επιπλέον, το Keras υποστηρίζεται από Google, Microsoft, Amazon, Apple, Nvidia, Uber και άλλους.

Ο Κερασάς τελειώνει

Η Keras proper δεν κάνει τις δικές της λειτουργίες χαμηλού επιπέδου, όπως προϊόντα τανυστών και συνελεύσεις. βασίζεται σε έναν κινητήρα back-end για αυτό. Παρόλο που η Keras υποστηρίζει πολλούς κινητήρες back-end, το κύριο (και το προεπιλεγμένο) back-end είναι το TensorFlow και ο κύριος υποστηρικτής του είναι το Google. Το Keras API έρχεται συσκευασμένο στο TensorFlow ως tf.keras, όπως αναφέρθηκε προηγουμένως, θα γίνει το κύριο API TensorFlow από το TensorFlow 2.0.

Για να αλλάξετε τις άκρες, απλώς επεξεργαστείτε το δικό σας $ HOME / .keras / keras.json αρχείο και καθορίστε ένα διαφορετικό όνομα παρασκηνίου, όπως Θεανώ ή CNTK. Εναλλακτικά, μπορείτε να παρακάμψετε το διαμορφωμένο πίσω άκρο ορίζοντας τη μεταβλητή περιβάλλοντος KERAS_BACKEND, είτε στο κέλυφος σας είτε στον κωδικό Python χρησιμοποιώντας το os.environ ["KERAS_BACKEND"] ιδιοκτησία.

Μοντέλα Keras

ο Μοντέλο είναι η βασική δομή δεδομένων Keras. Υπάρχουν δύο κύριος τύποι μοντέλων που διατίθενται στο Keras: το Ακολουθητικός μοντέλο, και το Μοντέλο τάξη που χρησιμοποιείται με το λειτουργικό API.

Διαδοχικά μοντέλα Keras

ο Ακολουθητικός Το μοντέλο είναι μια γραμμική στοίβα στρωμάτων και τα επίπεδα μπορούν να περιγραφούν πολύ απλά. Ακολουθεί ένα παράδειγμα από την τεκμηρίωση Keras που χρησιμοποιεί model.add () για να ορίσετε δύο πυκνά στρώματα σε ένα Ακολουθητικός μοντέλο:

εισαγάγετε σκληρό

από keras.models import Sequential

από την keras.layers εισαγωγή Dense

# Δημιουργήστε διαδοχικό μοντέλο με πυκνά επίπεδα, χρησιμοποιώντας τη μέθοδο προσθήκης

Το #Dense υλοποιεί τη λειτουργία:

# έξοδος = ενεργοποίηση (κουκκίδα (είσοδος, πυρήνας) + προκατάληψη)

# Οι μονάδες είναι η διαστατικότητα του χώρου εξόδου για το επίπεδο,

# που ισούται με τον αριθμό των κρυφών μονάδων

# Οι λειτουργίες ενεργοποίησης και απώλειας ενδέχεται να καθορίζονται από συμβολοσειρές ή κλάσεις

model.add (Dense (μονάδες = 10, ενεργοποίηση = "softmax"))

# Η μέθοδος μεταγλώττισης διαμορφώνει τη διαδικασία εκμάθησης του μοντέλου

optimizer = "sgd",

μετρήσεις = ['ακρίβεια'])

# Η μέθοδος εφαρμογής κάνει την εκπαίδευση σε παρτίδες

# x_train και y_train είναι συστοιχίες Numpy - όπως και στο Scikit-Learn API.

# Η μέθοδος αξιολόγησης υπολογίζει τις απώλειες και τις μετρήσεις

# για το εκπαιδευμένο μοντέλο

# Η μέθοδος πρόβλεψης εφαρμόζει το εκπαιδευμένο μοντέλο στις εισόδους

# για τη δημιουργία εξόδων

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

Αξίζει να διαβάσετε τα σχόλια στον παραπάνω κώδικα. Αξίζει επίσης να σημειωθεί πόσο λίγο υπάρχει στον πραγματικό κώδικα σε σύγκριση με, ας πούμε, τα API TensorFlow χαμηλού επιπέδου. Κάθε ορισμός επιπέδου απαιτεί μια γραμμή κώδικα, η συλλογή (ορισμός διαδικασίας μάθησης) παίρνει μια γραμμή κώδικα και προσαρμόζει (προπόνηση), αξιολογεί (υπολογίζοντας τις απώλειες και μετρήσεις) και προβλέποντας τις εξόδους από το εκπαιδευμένο μοντέλο, κάθε μία παίρνει μια γραμμή κώδικα .

Λειτουργικό API Keras

Το μοντέλο Keras Sequential είναι απλό αλλά περιορισμένο στην τοπολογία του μοντέλου. Το Keras λειτουργικό API είναι χρήσιμο για τη δημιουργία σύνθετων μοντέλων, όπως μοντέλα πολλαπλών εισόδων / πολλαπλών εξόδων, κατευθυνόμενα ακυκλικά γραφήματα (DAG) και μοντέλα με κοινόχρηστα επίπεδα.

Το λειτουργικό API χρησιμοποιεί τα ίδια επίπεδα με το Sequential μοντέλο, αλλά παρέχει περισσότερη ευελιξία στη συγκέντρωσή τους. Στο λειτουργικό API ορίζετε πρώτα τα επίπεδα και, στη συνέχεια, δημιουργείτε το Μοντέλο, μεταγλωττίζετε και προσαρμόστε το (εκπαιδεύστε). Η αξιολόγηση και η πρόβλεψη είναι ουσιαστικά τα ίδια όπως σε ένα Sequential μοντέλο, οπότε έχουν παραλειφθεί στον παρακάτω δείγμα κώδικα.

από την keras.layers εισαγωγή Input, Dense

από το Hard.models import Model

# Αυτό επιστρέφει έναν τανυστή

# μια παρουσία επιπέδου μπορεί να καλείται σε έναν τανυστή και επιστρέφει έναν τανυστή

x = Πυκνό (64, ενεργοποίηση = "relu") (x)

προβλέψεις = Πυκνή (10, ενεργοποίηση = "softmax") (x)

# Αυτό δημιουργεί ένα μοντέλο που περιλαμβάνει

# το επίπεδο εισόδου και τρία πυκνά επίπεδα

model.compile (optimizer = 'rmsprop',

απώλεια = "ategorical_crossentropy ",

μετρήσεις = ['ακρίβεια'])

model.fit (δεδομένα, ετικέτες) # ξεκινά την προπόνηση

Στρώματα Keras

Στα προηγούμενα παραδείγματα χρησιμοποιήσαμε μόνο Πυκνός στρώματα. Το Keras έχει μια ευρεία επιλογή προκαθορισμένων τύπων επιπέδων και υποστηρίζει επίσης τη σύνταξη των δικών σας επιπέδων.

Τα βασικά στρώματα περιλαμβάνουν Πυκνός (dot product plus bias), Δραστηριοποίηση (λειτουργία μεταφοράς ή σχήμα νευρώνα), Εγκατάλειψη (ορίστε τυχαία ένα κλάσμα μονάδων εισόδου σε 0 σε κάθε ενημέρωση προπόνησης για να αποφύγετε την υπερβολική τοποθέτηση), Λάμδα (τυλίξτε μια αυθαίρετη έκφραση ως Στρώμα αντικείμενο), και πολλά άλλα. Επίπεδα συνεδρίων (η χρήση ενός φίλτρου για τη δημιουργία ενός χάρτη χαρακτηριστικών) εκτελούνται από 1D έως 3D και περιλαμβάνουν τις πιο κοινές παραλλαγές, όπως περικοπή και μεταφερόμενα στρώματα συνελεύσεων για κάθε διάσταση. Η 2D συνέλιξη, η οποία εμπνεύστηκε από τη λειτουργικότητα του οπτικού φλοιού, χρησιμοποιείται συνήθως για την αναγνώριση εικόνας.

Τα επίπεδα συγκέντρωσης (downscaling) κυμαίνονται από 1D έως 3D και περιλαμβάνουν τις πιο κοινές παραλλαγές, όπως η μέγιστη και η μέση συγκέντρωση. Τα τοπικά συνδεδεμένα στρώματα λειτουργούν σαν στρώματα συνελεύσεων, εκτός από το ότι τα βάρη δεν είναι κοινόχρηστα. Τα επαναλαμβανόμενα επίπεδα περιλαμβάνουν απλή (πλήρως συνδεδεμένη επανάληψη), περιφραγμένη, LSTM και άλλα. Αυτά είναι χρήσιμα για την επεξεργασία γλωσσών, μεταξύ άλλων εφαρμογών. Τα επίπεδα θορύβου βοηθούν στην αποφυγή της υπερβολικής τοποθέτησης.

Σύνολα δεδομένων Keras

Η Keras παρέχει επτά από τα κοινά σύνολα δεδομένων δείγματος βαθιάς μάθησης μέσω του σκληρά.datasets τάξη. Αυτό περιλαμβάνει cifar10 και cifar100 μικρές έγχρωμες εικόνες, κριτικές ταινιών IMDB, θέματα ειδήσεων Reuters, χειρόγραφα ψηφία MNIST, εικόνες μόδας MNIST και τιμές στέγης της Βοστώνης.

Εφαρμογές και παραδείγματα Keras

Η Keras παρέχει επίσης δέκα γνωστά μοντέλα, που ονομάζονται Keras Applications, προκατασκευασμένα έναντι του ImageNet: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. Μπορείτε να τα χρησιμοποιήσετε για να προβλέψετε την ταξινόμηση των εικόνων, να εξαγάγετε λειτουργίες από αυτές και να βελτιώσετε τα μοντέλα σε ένα διαφορετικό σύνολο τάξεων.

Παρεμπιπτόντως, η βελτιστοποίηση των υπαρχόντων μοντέλων είναι ένας καλός τρόπος για να επιταχύνετε την εκπαίδευση. Για παράδειγμα, μπορείτε να προσθέσετε επίπεδα όπως θέλετε, να παγώσετε τα βασικά στρώματα για να εκπαιδεύσετε τα νέα επίπεδα και, στη συνέχεια, να ξεπαγώσετε μερικά από τα βασικά στρώματα για να τελειοποιήσετε την εκπαίδευση. Μπορείτε να παγώσετε ένα επίπεδο με τη ρύθμιση layer.trainable = Λάθος.

Το αποθετήριο παραδειγμάτων Keras περιέχει περισσότερα από 40 δείγματα μοντέλων. Καλύπτουν μοντέλα όρασης, κείμενο και ακολουθίες και γενετικά μοντέλα.

Ανάπτυξη του Κερά

Τα μοντέλα Keras μπορούν να αναπτυχθούν σε ένα ευρύ φάσμα πλατφορμών, ίσως περισσότερο από οποιοδήποτε άλλο πλαίσιο βαθιάς μάθησης. Αυτό περιλαμβάνει iOS, μέσω CoreML (υποστηρίζεται από την Apple). Android, μέσω του χρόνου εκτέλεσης TensorFlow Android. σε πρόγραμμα περιήγησης, μέσω Keras.js και WebDNN. στο Google Cloud, μέσω TensorFlow-Serving. σε ένα backp web της Python. στο JVM, μέσω εισαγωγής μοντέλου DL4J. και στο Raspberry Pi.

Για να ξεκινήσετε με το Keras, διαβάστε την τεκμηρίωση, ελέγξτε το αποθετήριο κώδικα, εγκαταστήστε το TensorFlow (ή έναν άλλο μηχανισμό υποστήριξης) και το Keras και δοκιμάστε το εκπαιδευτικό ξεκίνημα για το μοντέλο Keras Sequential. Από εκεί μπορείτε να προχωρήσετε σε άλλα σεμινάρια και τελικά να εξερευνήσετε τα Παραδείγματα Keras.