Çözüldü: önceden eğitilmiş modelin pytorch'a nasıl yükleneceği

Son Güncelleme: 09/11/2023

önceden eğitilmiş model nasıl yüklenir Makine öğrenimi ve yapay zeka dünyasında, daha hızlı ve daha doğru sonuçlar elde etmek için **önceden eğitilmiş modellerle** çalışmak yaygındır. Bu modeller zaten büyük veri kümeleri üzerinde eğitilmiştir ve esasen kullanıma hazırdır. Önceden eğitilmiş bir modeli yüklemek, sıfırdan başlamaya kıyasla önemli miktarda zaman ve kaynak tasarrufu sağlayabilir. Bu makalede, özellikle yaygın olarak kullanılan TensorFlow adlı derin öğrenme kitaplığına odaklanarak Python kullanarak önceden eğitilmiş bir modelin nasıl yükleneceğini keşfedeceğiz. Soruna bir çözüm sunacağız, gerekli kitaplıkları ve işlevleri tartışacağız ve kodun adım adım açıklamasını yapacağız.

Önceden Eğitilmiş Bir Modeli Yükleme

Önceden eğitilmiş bir modelle çalışmanın ilk adımı, modelin kendisini elde etmektir. Genellikle görüntü sınıflandırma ve nesne algılama gibi görevler için kullanılan VGG, ResNet ve Inception gibi birkaç popüler önceden eğitilmiş model mevcuttur. Bu örnekte, ImageNet veri setinde önceden eğitilmiş olan VGG16 modelini kullanacağız.

Önceden eğitilmiş VGG16 modelini yüklemek için TensorFlow kitaplığını ve onun Keras modülünü kullanmamız gerekiyor. TensorFlow kurulu değilse, bunu aşağıdaki komutla yapabilirsiniz:

"
pip kurulum tensorflow
"

TensorFlow kurulduktan sonra, VGG16 modelini yüklemeye devam edebiliriz. İşte kodun adım adım açıklaması:

from tensorflow.keras.applications import VGG16

# Load the pretrained VGG16 model with the 'imagenet' weights
model = VGG16(weights="imagenet")

Yukarıdaki kodda ilk olarak tensorflow.keras.applications modülünden VGG16 sınıfını import ediyoruz. Ardından, modele ImageNet veri kümesinde önceden eğitilmiş ağırlıkları yükleme talimatı veren `weights=”imagenet”' argümanını ileterek VGG16 modelinin bir örneğini oluşturuyoruz.

Önceden Eğitilmiş Modeli Kullanma

Artık önceden eğitilmiş VGG16 modelini yüklediğimize göre, onu görüntü sınıflandırma gibi çeşitli görevler için kullanabiliriz. Görüntü sınıflandırması yapmak için, girdi görüntüsünü VGG16 modeliyle uyumlu hale getirmek için önceden işlememiz gerekir. Bu, görüntüyü yeniden boyutlandırmayı, piksel değerlerini normalleştirmeyi ve boyutlarını genişletmeyi içerir.

import numpy as np
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.vgg16 import preprocess_input

# Load an example image and preprocess it
img_path = "path/to/your/image.jpg"
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

Yukarıdaki kodda, girdi görüntüsünü yüklemek ve ön işlemek için "tensorflow.keras.preprocessing"deki "image" modülünü kullanıyoruz. Görüntü, VGG224 modelinin gereksinimlerine göre `(224, 16)` olarak yeniden boyutlandırılır. Daha sonra görüntüyü bir NumPy dizisine dönüştürüyoruz ve boyutlarını beklenen giriş şekline uyacak şekilde genişletiyoruz. Son olarak, piksel değerlerini normalleştirmek için "tensorflow.keras.applications.vgg16" modülünden "preprocess_input" işlevini kullanıyoruz.

Giriş görüntüsü önceden işlenmiş ve hazır durumdayken, artık bir tahmin yapmak için önceden eğitilmiş VGG16 modelini kullanabiliriz:

from tensorflow.keras.applications.vgg16 import decode_predictions

# Make a prediction using the pretrained model
predictions = model.predict(x)

# Decode the prediction and print the top 3 results
predicted_classes = decode_predictions(predictions, top=3)
print(predicted_classes)

Yukarıdaki örnekte, giriş görüntüsü için bir tahmin oluşturmak üzere "model.predict" yöntemini kullanıyoruz. Elde edilen tahminlerin kodu daha sonra ImageNet veri kümesinden tahmin edilen ilk 16 sınıfı ortaya çıkarmak için "tensorflow.keras.applications.vgg3" modülündeki "decode_predictions" işlevi kullanılarak çözülür.

Sonuç olarak, Python'da önceden eğitilmiş modellerin yüklenmesi ve kullanılması TensorFlow kitaplığı ile kolaylaştırılmıştır. Bu yaklaşım, doğru sonuçlara ulaşmak için gereken zamanı ve kaynakları önemli ölçüde azaltabilir ve bu da onu hem acemi hem de deneyimli makine öğrenimi uygulayıcıları için inanılmaz derecede değerli kılar.

İlgili Mesajlar: