Fashion-MNIST הוא מערך נתונים של תמונות מאמרים של Zalando, המורכב מסט הדרכה של 60,000 דוגמאות ומערך מבחן של 10,000 דוגמאות. כל דוגמה היא תמונה בגווני אפור בגודל 28×28, המשויכת לתווית מ-10 מחלקות. מערך הנתונים משמש כתחליף ישיר למערך הנתונים המקורי של MNIST לאלגוריתמים של למידת מכונה, ומספק אלטרנטיבה מאתגרת יותר בשל המורכבות והשונות שלו בתמונות הקשורות לאופנה.
כדי להשתמש באופן מעשי במערך הנתונים של Fashion-MNIST בפלטפורמת הבינה המלאכותית של Google Cloud, יש לבצע מספר שלבים מובנים הכוללים הכנת נתונים, הדרכת מודלים, פריסה והערכה. כל אחד מהשלבים הללו דורש הבנה מקיפה הן של מערך הנתונים והן של סביבת Google Cloud.
שלב 1: הגדרת סביבת הענן של Google
לפני השימוש במערך הנתונים, ודא שיש לך חשבון Google Cloud. הגדר פרויקט חדש ב-Google Cloud Console. אפשר חיוב עבור הפרויקט שלך והפעל את Cloud AI Platform API. הגדרה זו חשובה מכיוון שהיא מאפשרת לך למנף את התשתית החזקה של Google למשימות למידת מכונה.
1. צור פרויקט Google Cloud: נווט אל 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. רשתות עצביות Convolutional Neural (CNNs) הן בחירה פופולרית בשל יעילותן במשימות סיווג תמונות.
1. הגדר את ארכיטקטורת המודל: השתמש ב-TensorFlow או ב-PyTorch כדי להגדיר מודל של CNN. ארכיטקטורה טיפוסית עשויה לכלול שכבות קונבולוציוניות מרובות ואחריהן שכבות מאסף מקסימלי, ושכבה צפופה מחוברת לחלוטין.
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. הרכיב את המודל: בחר אופטימיזציה מתאימה, פונקציית אובדן ומדדים. עבור סיווג רב-מחלקות, נעשה שימוש נפוץ ב-`Dare_categorical_crossentropy`.
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
לאחר הכשרה של המודל, השלב הבא הוא לפרוס אותו ב-Google Cloud AI Platform עבור תחזיות ניתנות להרחבה.
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 > מודלים וצור מודל חדש. ציין את שם הדגם והאזור.
4. פרוס גרסת דגם: צור גרסה חדשה של המודל על ידי ציון נתיב ה-Cloud Storage של SavedModel. הגדר את סוג המכונה ואפשרויות קנה המידה בהתבסס על צרכי החיזוי שלך.
5. בדוק את הפריסה: השתמש בשירות החיזוי של פלטפורמת הבינה המלאכותית כדי לבדוק את המודל שנפרס. אתה יכול לשלוח בקשות 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. על ידי ביצוע השלבים המתוארים, אפשר למנף ביעילות את התשתית של גוגל לבנייה, פריסה ותחזוקה של מודלים של למידת מכונה ניתנים להרחבה. תהליך זה לא רק משפר את הדיוק והביצועים של הדגם אלא גם מבטיח את ישימותו לתרחישים בעולם האמיתי בתעשיית האופנה.
גוגל מעדכנת לעתים קרובות את פלטפורמת הבינה המלאכותית שלה (נכון לשנת 2024 התפתחה לפלטפורמת הבינה המלאכותית Vertex). אם אתה נתקל בבעיות כלשהן עם עדכונים אלה, תוכל גם לנסות את הקוד הבא:
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:
- הזכרת הרבה סוגים של אלגוריתמים כמו רגרסיה לינארית, עצי החלטה. האם כל אלה רשתות נוירונים?
- מהם מדדי הערכת הביצועים של מודל?
- מהי רגרסיה לינארית?
- האם ניתן לשלב מודלים שונים של ML ולבנות AI מאסטר?
- מהם כמה מהאלגוריתמים הנפוצים ביותר בשימוש בלמידת מכונה?
- כיצד ליצור גרסה של המודל?
- כיצד ליישם את 7 השלבים של ML בהקשר לדוגמה?
- כיצד ניתן ליישם למידת מכונה על נתוני היתרי בנייה?
- מדוע הופסקה הייצור של AutoML Tables ומה ימשיך אותם?
- מהי המשימה לפרש שרבוטים שצוירו על ידי שחקנים בהקשר של AI?
הצג שאלות ותשובות נוספות ב-EITC/AI/GCML Google Cloud Machine Learning