Fashion-MNIST is een dataset van Zalando's artikelafbeeldingen, bestaande uit een trainingsset van 60,000 voorbeelden en een testset van 10,000 voorbeelden. Elk voorbeeld is een 28×28 grijstintenafbeelding, gekoppeld aan een label uit 10 klassen. De dataset dient als een directe drop-in vervanging voor de originele MNIST-dataset voor het benchmarken van machine learning-algoritmen, en biedt een uitdagender alternatief vanwege de complexiteit en variabiliteit in modegerelateerde afbeeldingen.
Om de Fashion-MNIST-dataset in het AI-platform van Google Cloud praktisch te gebruiken, moet u verschillende gestructureerde stappen volgen die gegevensvoorbereiding, modeltraining, implementatie en evaluatie omvatten. Elk van deze fasen vereist een uitgebreid begrip van zowel de dataset als de Google Cloud-omgeving.
Stap 1: Google Cloud Environment instellen
Voordat u de dataset gebruikt, moet u ervoor zorgen dat u een Google Cloud-account hebt. Stel een nieuw project in de Google Cloud Console in. Schakel facturering in voor uw project en activeer de Cloud AI Platform API. Deze instelling is belangrijk omdat u hiermee de robuuste infrastructuur van Google kunt benutten voor machine learning-taken.
1. Een Google Cloud-project maken: Navigeer naar de Google Cloud Console en maak een nieuw project. Geef uw project een unieke naam voor eenvoudige identificatie.
2. API's inschakelen: Ga naar het API & Services-dashboard en schakel de Cloud AI Platform API in. Deze API is essentieel voor het implementeren van machine learning-modellen op Google Cloud.
3. Installeer Cloud-SDK: Download en installeer de Google Cloud SDK op uw lokale machine. Deze SDK biedt de opdrachtregeltool `gcloud`, die nodig is voor interactie met uw Google Cloud-resources.
Stap 2: De Fashion-MNIST-dataset voorbereiden
De Fashion-MNIST-dataset is toegankelijk via verschillende bronnen, waaronder de officiële GitHub-repository. Het is essentieel om de dataset vooraf te verwerken om ervoor te zorgen dat deze de juiste indeling heeft voor trainingsmodellen op Google Cloud.
1. Download de gegevensset: De dataset is beschikbaar in meerdere formaten, waaronder CSV en NumPy arrays. Voor TensorFlow-gebruikers kan deze direct worden geladen met de module `tensorflow.keras.datasets`.
python from tensorflow.keras.datasets import fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
2. Data Preprocessing: Normaliseer de pixelwaarden van de afbeeldingen naar het bereik [0, 1] door te delen door 255. Deze stap is belangrijk om ervoor te zorgen dat het model efficiënt convergeert tijdens de training.
python train_images = train_images/255.0 test_images = test_images/255.0
3. Gegevens opnieuw vormgeven en uitbreiden: Afhankelijk van de modelarchitectuur moet u de data mogelijk opnieuw vormgeven. Overweeg daarnaast data-augmentatietechnieken zoals rotatie, zoom en horizontale flip om de robuustheid van het model te verbeteren.
Stap 3: Modelontwikkeling
Ontwikkel een machine learning-model dat geschikt is voor de Fashion-MNIST-dataset. Convolutional Neural Networks (CNN's) zijn een populaire keuze vanwege hun effectiviteit bij taken voor beeldclassificatie.
1. Definieer de modelarchitectuur: Gebruik TensorFlow of PyTorch om een CNN-model te definiëren. Een typische architectuur kan meerdere convolutionele lagen bevatten, gevolgd door max-pooling lagen en een volledig verbonden dichte laag.
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. Stel het model samen: Kies een geschikte optimizer, verliesfunctie en metriek. Voor multi-class classificatie wordt vaak `sparse_categorical_crossentropy` gebruikt.
python model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
3. Train het model: Pas het model aan op de trainingsdata. Gebruik validatiedata om de prestaties van het model te monitoren en overfitting te voorkomen.
python model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
Stap 4: Het model implementeren op Google Cloud AI Platform
Zodra het model is getraind, is de volgende stap om het te implementeren op Google Cloud AI Platform voor schaalbare voorspellingen.
1. Sla het model op: Exporteer het getrainde model naar een formaat dat compatibel is met Google Cloud, zoals TensorFlow SavedModel.
python model.save('fashion_mnist_model')
2. Upload het model naar Google Cloud Storage: Gebruik de opdrachtregeltool `gsutil` om het model te uploaden naar een Google Cloud Storage-bucket.
bash gsutil cp -r fashion_mnist_model gs://your-bucket-name/
3. Maak een model op het AI-platform: Navigeer in de Google Cloud Console naar AI Platform > Models en maak een nieuw model. Geef de modelnaam en regio op.
4. Een modelversie implementeren: Maak een nieuwe versie van het model door het Cloud Storage-pad van het SavedModel op te geven. Configureer het machinetype en de schaalopties op basis van uw voorspellingsbehoeften.
5. Test de implementatie: Gebruik de voorspellingsservice van het AI-platform om het geïmplementeerde model te testen. U kunt HTTP-verzoeken met afbeeldingsgegevens naar het model-eindpunt sturen en voorspellingen ontvangen.
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)
Stap 5: Modelevaluatie en iteratie
Na de implementatie is het belangrijk om de prestaties van het model te evalueren en het ontwerp te itereren om de nauwkeurigheid en efficiëntie te verbeteren.
1. Monitormodelprestaties: Gebruik de monitoringtools van Google Cloud om modelprestatiestatistieken bij te houden, zoals latentie, doorvoer en voorspellingsnauwkeurigheid. Deze gegevens zijn van onschatbare waarde voor het identificeren van knelpunten en verbeterpunten.
2. A/B-testing: Voer A/B-testen uit om verschillende modelversies te vergelijken. Deze aanpak helpt bij het begrijpen van de impact van wijzigingen en het selecteren van het best presterende model.
3. Continue integratie en implementatie (CI/CD): Implementeer CI/CD-praktijken om de implementatie van nieuwe modelversies te automatiseren. Deze opstelling zorgt ervoor dat verbeteringen snel naar productie worden gebracht.
4. Terugkoppeling: Stel een feedbacklus in met eindgebruikers om inzichten te verzamelen over modelvoorspellingen. Gebruik deze feedback om het model te verfijnen en de relevantie ervan voor real-world-toepassingen te verbeteren.
5. Herscholing met nieuwe gegevens: Werk het model regelmatig bij met nieuwe gegevens om de nauwkeurigheid ervan in de loop van de tijd te behouden. Deze praktijk is met name belangrijk in de mode-industrie, waar trends en stijlen snel evolueren.
De Fashion-MNIST-dataset biedt een praktisch use case voor het implementeren van beeldclassificatiemodellen op het AI-platform van Google Cloud. Door de beschreven stappen te volgen, kan men effectief gebruikmaken van de infrastructuur van Google om schaalbare machine learning-modellen te bouwen, implementeren en onderhouden. Dit proces verbetert niet alleen de nauwkeurigheid en prestaties van het model, maar zorgt er ook voor dat het toepasbaar is op real-world scenario's in de mode-industrie.
Google werkt zijn AI Platform regelmatig bij (vanaf 2024 geëvolueerd naar het Vertex AI Platform). Als u problemen ondervindt met deze updates, kunt u ook de volgende code proberen:
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}")
Andere recente vragen en antwoorden over EITC/AI/GCML Google Cloud Machine Learning:
- Wat is de programmeertaal voor machine learning? Het is gewoon Python
- Hoe wordt machine learning toegepast in de wetenschappelijke wereld?
- Hoe bepaal je welk machine learning-algoritme je moet gebruiken en hoe vind je het?
- Wat zijn de verschillen tussen Federated Learning, Edge Computing en On-Device Machine Learning?
- Hoe bereid en reinig ik gegevens vóór de training?
- Wat zijn de specifieke initiële taken en activiteiten in een machine learning-project?
- Wat zijn de vuistregels voor het toepassen van een specifieke strategie en model voor machinaal leren?
- Welke parameters geven aan dat het tijd is om over te stappen van een lineair model naar deep learning?
- Welke versie van Python is het meest geschikt voor de installatie van TensorFlow om problemen te voorkomen doordat er geen TF-distributies beschikbaar zijn?
- Wat is een diep neuraal netwerk?
Bekijk meer vragen en antwoorden in EITC/AI/GCML Google Cloud Machine Learning