Το Fashion-MNIST είναι ένα σύνολο δεδομένων εικόνων άρθρων του Zalando, που αποτελείται από ένα σετ εκπαίδευσης 60,000 παραδειγμάτων και ένα δοκιμαστικό σύνολο 10,000 παραδειγμάτων. Κάθε παράδειγμα είναι μια εικόνα σε κλίμακα του γκρι 28×28, που σχετίζεται με μια ετικέτα από 10 κατηγορίες. Το σύνολο δεδομένων χρησιμεύει ως άμεση αντικατάσταση για το αρχικό σύνολο δεδομένων MNIST για τη συγκριτική αξιολόγηση αλγορίθμων μηχανικής μάθησης, παρέχοντας μια πιο απαιτητική εναλλακτική λύση λόγω της πολυπλοκότητας και της μεταβλητότητάς του στις εικόνες που σχετίζονται με τη μόδα.
Για να χρησιμοποιήσετε πρακτικά το σύνολο δεδομένων Fashion-MNIST στην πλατφόρμα AI του Google Cloud, πρέπει να ακολουθήσετε πολλά δομημένα βήματα που περιλαμβάνουν προετοιμασία δεδομένων, εκπαίδευση μοντέλων, ανάπτυξη και αξιολόγηση. Κάθε ένα από αυτά τα στάδια απαιτεί ολοκληρωμένη κατανόηση τόσο του συνόλου δεδομένων όσο και του περιβάλλοντος Google Cloud.
Βήμα 1: Ρύθμιση του Google Cloud Environment
Πριν χρησιμοποιήσετε το σύνολο δεδομένων, βεβαιωθείτε ότι έχετε λογαριασμό Google Cloud. Ρυθμίστε ένα νέο έργο στο Google Cloud Console. Ενεργοποιήστε τη χρέωση για το έργο σας και ενεργοποιήστε το Cloud AI Platform API. Αυτή η ρύθμιση είναι σημαντική καθώς σας επιτρέπει να αξιοποιήσετε την ισχυρή υποδομή της Google για εργασίες μηχανικής εκμάθησης.
1. Δημιουργήστε ένα Google Cloud Project: Μεταβείτε στο Google Cloud Console και δημιουργήστε ένα νέο έργο. Εκχωρήστε ένα μοναδικό όνομα στο έργο σας για εύκολη αναγνώριση.
2. Ενεργοποίηση API: Μεταβείτε στον πίνακα ελέγχου API & Services και ενεργοποιήστε το Cloud AI Platform API. Αυτό το API είναι απαραίτητο για την ανάπτυξη μοντέλων μηχανικής εκμάθησης στο Google Cloud.
3. Εγκαταστήστε το Cloud SDK: Κατεβάστε και εγκαταστήστε το Google Cloud SDK στον τοπικό σας υπολογιστή. Αυτό το SDK παρέχει το εργαλείο γραμμής εντολών «gcloud», το οποίο είναι απαραίτητο για την αλληλεπίδραση με τους πόρους σας στο Google Cloud.
Βήμα 2: Προετοιμασία του συνόλου δεδομένων Fashion-MNIST
Το σύνολο δεδομένων Fashion-MNIST είναι προσβάσιμο από διάφορες πηγές, συμπεριλαμβανομένου του επίσημου αποθετηρίου GitHub. Είναι απαραίτητο να προεπεξεργαστείτε το σύνολο δεδομένων για να διασφαλίσετε ότι είναι στη σωστή μορφή για μοντέλα εκπαίδευσης στο Google Cloud.
1. Κατεβάστε το σύνολο δεδομένων: Το σύνολο δεδομένων είναι διαθέσιμο σε πολλές μορφές, συμπεριλαμβανομένων των συστοιχιών CSV και NumPy. Για χρήστες του TensorFlow, μπορεί να φορτωθεί απευθείας χρησιμοποιώντας τη λειτουργική μονάδα «tensorflow.keras.datasets».
python from tensorflow.keras.datasets import fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
2. Προεπεξεργασία δεδομένων: Κανονικοποιήστε τις τιμές των εικονοστοιχείων των εικόνων στο εύρος [0, 1] διαιρώντας με το 255. Αυτό το βήμα είναι σημαντικό για να διασφαλιστεί ότι το μοντέλο συγκλίνει αποτελεσματικά κατά τη διάρκεια της εκπαίδευσης.
python train_images = train_images/255.0 test_images = test_images/255.0
3. Αναμόρφωση και αύξηση δεδομένων: Ανάλογα με την αρχιτεκτονική του μοντέλου, μπορεί να χρειαστεί να αλλάξετε το σχήμα των δεδομένων. Επιπλέον, εξετάστε τεχνικές αύξησης δεδομένων, όπως περιστροφή, ζουμ και οριζόντια αναστροφή για να βελτιώσετε την ευρωστία του μοντέλου.
Βήμα 3: Ανάπτυξη μοντέλου
Αναπτύξτε ένα μοντέλο μηχανικής μάθησης κατάλληλο για το σύνολο δεδομένων Fashion-MNIST. Τα συνελικτικά νευρωνικά δίκτυα (CNN) είναι μια δημοφιλής επιλογή λόγω της αποτελεσματικότητάς τους σε εργασίες ταξινόμησης εικόνων.
1. Ορίστε την Αρχιτεκτονική Μοντέλου: Χρησιμοποιήστε το TensorFlow ή το PyTorch για να ορίσετε ένα μοντέλο CNN. Μια τυπική αρχιτεκτονική μπορεί να περιλαμβάνει πολλαπλά συνελικτικά στρώματα ακολουθούμενα από στρώματα max-pooling και ένα πλήρως συνδεδεμένο πυκνό στρώμα.
python model = tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
2. Μεταγλώττιση του μοντέλου: Επιλέξτε ένα κατάλληλο εργαλείο βελτιστοποίησης, συνάρτηση απώλειας και μετρήσεις. Για ταξινόμηση πολλαπλών τάξεων, χρησιμοποιείται συνήθως η "αραιή_κατηγορική_διασταυρούμενη_διασταύρωση".
python model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
3. Εκπαιδεύστε το μοντέλο: Τοποθετήστε το μοντέλο στα δεδομένα εκπαίδευσης. Χρησιμοποιήστε δεδομένα επικύρωσης για να παρακολουθήσετε την απόδοση του μοντέλου και να αποφύγετε την υπερβολική τοποθέτηση.
python model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
Βήμα 4: Ανάπτυξη του μοντέλου στην πλατφόρμα Google Cloud AI
Μόλις το μοντέλο εκπαιδευτεί, το επόμενο βήμα είναι να το αναπτύξετε στην πλατφόρμα Google Cloud AI για κλιμακούμενες προβλέψεις.
1. Αποθηκεύστε το μοντέλο: Εξαγωγή του εκπαιδευμένου μοντέλου σε μορφή συμβατή με το Google Cloud, όπως το TensorFlow SavedModel.
python model.save('fashion_mnist_model')
2. Μεταφορτώστε το μοντέλο στο Google Cloud Storage: Χρησιμοποιήστε το εργαλείο γραμμής εντολών `gsutil` για να ανεβάσετε το μοντέλο σε έναν κάδο Google Cloud Storage.
bash gsutil cp -r fashion_mnist_model gs://your-bucket-name/
3. Δημιουργήστε ένα μοντέλο σε πλατφόρμα AI: Στο Google Cloud Console, μεταβείτε στο AI Platform > Μοντέλα και δημιουργήστε ένα νέο μοντέλο. Καθορίστε το όνομα και την περιοχή του μοντέλου.
4. Αναπτύξτε μια έκδοση μοντέλου: Δημιουργήστε μια νέα έκδοση του μοντέλου καθορίζοντας τη διαδρομή Cloud Storage του SavedModel. Διαμορφώστε τον τύπο του μηχανήματος και τις επιλογές κλιμάκωσης με βάση τις ανάγκες πρόβλεψής σας.
5. Δοκιμάστε την ανάπτυξη: Χρησιμοποιήστε την υπηρεσία πρόβλεψης της πλατφόρμας AI για να δοκιμάσετε το αναπτυγμένο μοντέλο. Μπορείτε να στείλετε αιτήματα HTTP με δεδομένα εικόνας στο τελικό σημείο του μοντέλου και να λάβετε προβλέψεις.
python from google.cloud import aiplatform project = 'your-project-id' endpoint_id = 'your-endpoint-id' location = 'us-central1' aiplatform.init(project=project, location=location) endpoint = aiplatform.Endpoint(endpoint_id=endpoint_id) # Example prediction response = endpoint.predict(instances=[test_images[0].tolist()]) print(response)
Βήμα 5: Αξιολόγηση και επανάληψη μοντέλου
Μετά την ανάπτυξη, είναι σημαντικό να αξιολογήσετε την απόδοση του μοντέλου και να επαναλάβετε τη σχεδίαση για να βελτιώσετε την ακρίβεια και την αποτελεσματικότητα.
1. Οθόνη απόδοσης μοντέλου: Χρησιμοποιήστε τα εργαλεία παρακολούθησης του Google Cloud για να παρακολουθείτε μετρήσεις απόδοσης μοντέλων, όπως η καθυστέρηση, η απόδοση και η ακρίβεια πρόβλεψης. Αυτά τα δεδομένα είναι ανεκτίμητα για τον εντοπισμό των σημείων συμφόρησης και των περιοχών προς βελτίωση.
2. Δοκιμή A/B: Πραγματοποιήστε δοκιμές A/B για να συγκρίνετε διαφορετικές εκδόσεις μοντέλων. Αυτή η προσέγγιση βοηθά στην κατανόηση του αντίκτυπου των αλλαγών και στην επιλογή του μοντέλου με την καλύτερη απόδοση.
3. Συνεχής ενσωμάτωση και ανάπτυξη (CI/CD): Εφαρμογή πρακτικών CI/CD για την αυτοματοποίηση της ανάπτυξης νέων εκδόσεων μοντέλων. Αυτή η ρύθμιση διασφαλίζει ότι οι βελτιώσεις παραδίδονται γρήγορα στην παραγωγή.
4. Βρόχος ανατροφοδότησης: Δημιουργήστε έναν βρόχο ανατροφοδότησης με τους τελικούς χρήστες για να συγκεντρώσετε πληροφορίες σχετικά με τις προβλέψεις μοντέλων. Χρησιμοποιήστε αυτά τα σχόλια για να ρυθμίσετε το μοντέλο και να βελτιώσετε τη συνάφειά του με τις εφαρμογές του πραγματικού κόσμου.
5. Επανεκπαίδευση με Νέα Δεδομένα: Ενημερώνετε τακτικά το μοντέλο με νέα δεδομένα για να διατηρείται η ακρίβειά του με την πάροδο του χρόνου. Αυτή η πρακτική είναι ιδιαίτερα σημαντική στη βιομηχανία της μόδας, όπου οι τάσεις και τα στυλ εξελίσσονται γρήγορα.
Το σύνολο δεδομένων Fashion-MNIST παρέχει μια πρακτική περίπτωση χρήσης για την ανάπτυξη μοντέλων ταξινόμησης εικόνων στην πλατφόρμα AI του Google Cloud. Ακολουθώντας τα βήματα που περιγράφονται, μπορεί κανείς να αξιοποιήσει αποτελεσματικά την υποδομή της Google για να δημιουργήσει, να αναπτύξει και να διατηρήσει κλιμακούμενα μοντέλα μηχανικής εκμάθησης. Αυτή η διαδικασία όχι μόνο ενισχύει την ακρίβεια και την απόδοση του μοντέλου, αλλά διασφαλίζει επίσης την εφαρμογή του σε πραγματικά σενάρια στη βιομηχανία της μόδας.
Η Google ενημερώνει συχνά την πλατφόρμα AI της (από το 2024 εξελίχθηκε σε Vertex AI Platform). Εάν αντιμετωπίσετε προβλήματα με αυτές τις ενημερώσεις, μπορείτε επίσης να δοκιμάσετε τον ακόλουθο κώδικα:
python import google.auth import google.auth.transport.requests import requests import json from tensorflow.keras.datasets import fashion_mnist import numpy as np # Load and preprocess Fashion MNIST data (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() test_images = test_images/255.0 # Add channel dimension to all test images test_images = test_images.reshape(-1, 28, 28, 1) # Prepare your model and project details project_id = 'project_id' model_name = 'modelname' model_version = 'V1' region = 'europe-west3' # AI Platform prediction endpoint URL url = f'https://{region}-ml.googleapis.com/v1/projects/{project_id}/models/{model_name}/versions/{model_version}:predict' # Authenticate and get the auth token credentials, _ = google.auth.default() auth_req = google.auth.transport.requests.Request() credentials.refresh(auth_req) auth_token = credentials.token # Set up headers for the request headers = { 'Authorization': f'Bearer {auth_token}', 'Content-Type': 'application/json' } class_labels = [ "T-shirt/top", "Trouser", "Pullover", "Dress", "Coat", "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot" ] # Loop through the first 6 test images for i in range(6): # Prepare the instance for prediction instance = test_images[i].tolist() # Make the request body data = json.dumps({"instances": [instance]}) # Send the request response = requests.post(url, headers=headers, data=data) response_json = response.json() # Extract the predictions predicted_probs = response_json['predictions'][0] # Get the index of the highest probability predicted_index = np.argmax(predicted_probs) predicted_label = class_labels[predicted_index] predicted_probability = predicted_probs[predicted_index] # Print the result in a more readable format print(response_json) print(f"Image {i + 1}: Predicted class: {predicted_label} ({predicted_index}) with probability {predicted_probability:.10f}")
Άλλες πρόσφατες ερωτήσεις και απαντήσεις σχετικά με EITC/AI/GCML Google Cloud Machine Learning:
- Όταν τα υλικά ανάγνωσης μιλούν για «επιλογή του σωστού αλγόριθμου», σημαίνει ότι βασικά όλοι οι πιθανοί αλγόριθμοι υπάρχουν ήδη; Πώς γνωρίζουμε ότι ένας αλγόριθμος είναι ο «σωστός» για ένα συγκεκριμένο πρόβλημα;
- Ποιες είναι οι υπερπαράμετροι που χρησιμοποιούνται στη μηχανική μάθηση;
- Η Whawt είναι η γλώσσα προγραμματισμού για μηχανική εκμάθηση και είναι η Just Python
- Πώς εφαρμόζεται η μηχανική μάθηση στον κόσμο της επιστήμης;
- Πώς αποφασίζετε ποιον αλγόριθμο μηχανικής εκμάθησης θα χρησιμοποιήσετε και πώς τον βρίσκετε;
- Ποιες είναι οι διαφορές μεταξύ της Ομοσπονδιακής μάθησης, του Edge Computing και της Μηχανικής Εκμάθησης On-Device;
- Πώς να προετοιμάσετε και να καθαρίσετε τα δεδομένα πριν από την προπόνηση;
- Ποιες είναι οι συγκεκριμένες αρχικές εργασίες και δραστηριότητες σε ένα έργο μηχανικής μάθησης;
- Ποιοι είναι οι εμπειρικοί κανόνες για την υιοθέτηση μιας συγκεκριμένης στρατηγικής και μοντέλου μηχανικής μάθησης;
- Ποιες παράμετροι υποδεικνύουν ότι ήρθε η ώρα να μεταβείτε από ένα γραμμικό μοντέλο στη βαθιά μάθηση;
Δείτε περισσότερες ερωτήσεις και απαντήσεις στο EITC/AI/GCML Google Cloud Machine Learning