yeniden düzenlediğiniz gönderiden anladığım kadarıyla, sanırım siz resim dosyasını değil resim klasörünü açmaya çalışıyorsunuz. ayrıca bu şekilde dizinlerle çalışmak kötü, hem bakımı ve yazımı da zor. kodda da kullandığınız gibi dizinleri os.path.join ile belirtin.
tahminimce test klasörünün içinde sınıf isimleri var. bu sınıf isimlerini öncelikle bir listeye atmanızı tavsiye ederim.
import numpy as np
from keras.models import load_model
from keras.preprocessing.image import load_img, img_to_array
import os
base_dir = os.getcwd()
model = load_model(
os.path.join(base_dir, "deneme6", "model6_save.h5")
)
test_veri_klasoru = os.path.join(base_dir, "dataset", "test")
labels = os.listdir(test_veri_klasoru)
burada değişiklik yaptığım şey şu. sizin dosya listesi dediğiniz değişken, aslında test klasöründeki sınıf isimlerini listeliyor. şöyle olduğunu tahmin ediyorum:
dataset
|_ test
– |_ angry
– |_ sad
– |_ …
bunlar sınıfları, yani tahmin işlemi sonucu eşleştirilecek etiketlerden her birini temsil ediyor. ben de bu isimleri labels isimli listeye aktardım. resimler bu klasörlerin içerisindedir. ben de test klasörüne giriş yapıp tüm sınıf klasörleri üzerinde for döngüsü yaptım.
tahminler = []
for dosya in labels:
# burada sınıf klasörlerinin içindeki resimleri yüklememiz gerekecek
for image in os.listdir(test_veri_klasoru, dosya):
resim_yolu = os.path.join(test_veri_klasoru, dosya, image)
veri = load_img(resim_yolu, target_size=(48, 48), color_mode=“grayscale”)
veri = img_to_array(veri)
veri = np.expand_dims(veri, axis=0)
veri = veri.astype(‘float32’)
veri /= 255.0
tahmin = model.predict(veri)
tahminler.append(np.argmax(tahmin))
print(“Tahminler:”, tahminler)
tabi bunların hepsi tahminim üzerine yazdığım şeyler. sizin burada tahmin verilerini listeye atıp sonradan nasıl yorumlayacağınızı da merak ettim. yani tek tek tahminleme işlemi yapmak yerine, listeyi tek seferde verip çıktıları almak daha mantıklı. hem siz listeden bir anlam üretemezsiniz. ama modele liste olarak verirseniz sonuçları yorumlamak daha kolay olur.