Fashion-MNIST je nabor podatkov Zalandovih slik člankov, sestavljen iz učnega nabora 60,000 primerov in testnega nabora 10,000 primerov. Vsak primer je slika v sivinah 28×28, povezana z oznako iz 10 razredov. Nabor podatkov služi kot neposredna zamenjava za izvirni nabor podatkov MNIST za primerjalno analizo algoritmov strojnega učenja, ki zagotavlja zahtevnejšo alternativo zaradi svoje kompleksnosti in spremenljivosti v slikah, povezanih z modo.
Za praktično uporabo nabora podatkov Fashion-MNIST v platformi umetne inteligence Google Cloud je treba slediti več strukturiranim korakom, ki vključujejo pripravo podatkov, usposabljanje modela, uvajanje in vrednotenje. Vsaka od teh stopenj zahteva celovito razumevanje nabora podatkov in okolja Google Cloud.
1. korak: Nastavitev Google Cloud Environment
Preden uporabite nabor podatkov, se prepričajte, da imate račun Google Cloud. Nastavite nov projekt v Google Cloud Console. Omogočite zaračunavanje za svoj projekt in aktivirajte Cloud AI Platform API. Ta nastavitev je pomembna, saj vam omogoča, da izkoristite Googlovo robustno infrastrukturo za naloge strojnega učenja.
1. Ustvarite Google Cloud Project: Pomaknite se do Google Cloud Console in ustvarite nov projekt. Za lažjo identifikacijo projektu dodelite edinstveno ime.
2. Omogoči API-je: Pojdite na nadzorno ploščo API & Services in omogočite Cloud AI Platform API. Ta API je bistvenega pomena za uvajanje modelov strojnega učenja v Google Cloud.
3. Namestite Cloud SDK: prenesite in namestite Google Cloud SDK na svoj lokalni računalnik. Ta SDK ponuja orodje ukazne vrstice `gcloud`, ki je potrebno za interakcijo z vašimi viri Google Cloud.
2. korak: Priprava nabora podatkov Fashion-MNIST
Do nabora podatkov Fashion-MNIST je mogoče dostopati iz različnih virov, vključno z uradnim repozitorijem GitHub. Bistveno je, da vnaprej obdelate nabor podatkov, da zagotovite, da je v pravilni obliki za modele za usposabljanje v storitvi Google Cloud.
1. Prenesite nabor podatkov: Nabor podatkov je na voljo v več formatih, vključno s CSV in nizi NumPy. Za uporabnike TensorFlow ga je mogoče neposredno naložiti z uporabo modula `tensorflow.keras.datasets`.
python from tensorflow.keras.datasets import fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
2. Predobdelava podatkov: Normalizirajte vrednosti slikovnih pik slik na obseg [0, 1] z deljenjem z 255. Ta korak je pomemben za zagotavljanje učinkovite konvergacije modela med usposabljanjem.
python train_images = train_images/255.0 test_images = test_images/255.0
3. Preoblikovanje in povečanje podatkov: Glede na arhitekturo modela boste morda morali preoblikovati podatke. Poleg tega razmislite o tehnikah povečanja podatkov, kot so rotacija, povečava in vodoravno obračanje, da povečate robustnost modela.
3. korak: Razvoj modela
Razvijte model strojnega učenja, primeren za nabor podatkov Fashion-MNIST. Konvolucijske nevronske mreže (CNN) so priljubljena izbira zaradi svoje učinkovitosti pri nalogah klasifikacije slik.
1. Določite arhitekturo modela: Uporabite TensorFlow ali PyTorch za definiranje modela CNN. Tipična arhitektura lahko vključuje več konvolucijskih plasti, ki jim sledijo plasti za maksimalno združevanje, in popolnoma povezana gosta plast.
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. Sestavite model: Izberite ustrezen optimizator, funkcijo izgube in meritve. Za klasifikacijo v več razredih se običajno uporablja `sparse_categorical_crossentropy`.
python model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
3. Usposobite modela: Prilagodite model na podatke o vadbi. Uporabite validacijske podatke za spremljanje delovanja modela in izogibanje prekomernemu opremljanju.
python model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
4. korak: Namestitev modela na Google Cloud AI Platform
Ko je model usposobljen, je naslednji korak njegova namestitev na Google Cloud AI Platform za razširljiva predvidevanja.
1. Shranite model: Izvozite izurjeni model v format, združljiv z Google Cloud, kot je TensorFlow SavedModel.
python model.save('fashion_mnist_model')
2. Naložite model v Google Cloud Storage: uporabite orodje ukazne vrstice `gsutil`, da naložite model v vedro Google Cloud Storage.
bash gsutil cp -r fashion_mnist_model gs://your-bucket-name/
3. Ustvarite model na platformi AI: V konzoli Google Cloud Console se pomaknite do AI Platform > Models in ustvarite nov model. Določite ime modela in regijo.
4. Razmestite različico modela: ustvarite novo različico modela tako, da določite pot do shranjevanja v oblaku za SavedModel. Konfigurirajte vrsto naprave in možnosti skaliranja glede na vaše potrebe po predvidevanju.
5. Preizkusite uvedbo: Uporabite storitev predvidevanja platforme AI Platform za testiranje razporejenega modela. Zahteve HTTP s slikovnimi podatki lahko pošljete končni točki modela in prejmete predvidevanja.
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. korak: Vrednotenje in ponovitev modela
Po uvedbi je pomembno oceniti zmogljivost modela in ponoviti zasnovo za izboljšanje natančnosti in učinkovitosti.
1. Spremljajte zmogljivost modela: uporabite orodja za spremljanje Google Cloud za sledenje meritvam uspešnosti modela, kot so zakasnitev, prepustnost in natančnost predvidevanja. Ti podatki so neprecenljivi za prepoznavanje ozkih grl in področij za izboljšave.
2. Testiranje A/B: Izvedite A/B testiranje za primerjavo različnih različic modelov. Ta pristop pomaga pri razumevanju vpliva sprememb in izbiri najučinkovitejšega modela.
3. Nenehna integracija in uvajanje (CI/CD): Izvedite prakse CI/CD za avtomatizacijo uvajanja novih različic modela. Ta nastavitev zagotavlja, da so izboljšave hitro dostavljene v proizvodnjo.
4. Povratna zanka: Vzpostavite povratno zanko s končnimi uporabniki za zbiranje vpogledov v napovedi modela. Uporabite te povratne informacije za natančno nastavitev modela in izboljšanje njegove ustreznosti za aplikacije v resničnem svetu.
5. Preusposabljanje z novimi podatki: Redno posodabljajte model z novimi podatki, da ohranite njegovo točnost skozi čas. Ta praksa je še posebej pomembna v modni industriji, kjer se trendi in stili hitro razvijajo.
Podatkovni nabor Fashion-MNIST zagotavlja primer praktične uporabe za uvajanje modelov klasifikacije slik na platformo AI platforme Google Cloud. Če sledite opisanim korakom, lahko učinkovito izkoristite Googlovo infrastrukturo za gradnjo, uvajanje in vzdrževanje razširljivih modelov strojnega učenja. Ta postopek ne le izboljša natančnost in zmogljivost modela, temveč tudi zagotavlja njegovo uporabnost v resničnih scenarijih v modni industriji.
Google pogosto posodablja svojo platformo AI (od leta 2024 se je razvila v platformo Vertex AI Platform). Če naletite na težave s temi posodobitvami, lahko poskusite tudi to kodo:
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}")
Druga nedavna vprašanja in odgovori v zvezi EITC/AI/GCML Google Cloud Machine Learning:
- Kako se strojno učenje uporablja v svetu znanosti
- Kako se odločite, kateri algoritem strojnega učenja boste uporabili in kako ga najdete?
- Kakšna je razlika med zveznim učenjem in Edge Computing&On-Device Machine Learning?
- Kako pripraviti in očistiti podatke pred treningom?
- Mislil sem na dejavnosti, kot so razvrščanje, identifikacija ipd. Želel bi seznam vseh možnih dejavnosti in razlago, kaj je mišljeno s posamezno.
- Katere dejavnosti je mogoče izvajati z ML in kako jih je mogoče uporabiti?
- Kakšna so osnovna pravila za sprejetje določene strategije? Ali lahko navedete posebne parametre, na podlagi katerih ugotovim, ali je vredno uporabiti bolj zapleten model?
- S katerim parametrom razumem, ali je čas za prehod z linearnega modela na globoko učenje?
- Katera različica Pythona bi bila najboljša za namestitev TensorFlow, da bi se izognili težavam, ko distribucije TF niso na voljo?
- Kaj je globoka nevronska mreža?
Oglejte si več vprašanj in odgovorov v EITC/AI/GCML Google Cloud Machine Learning