python: AttributeError: 'str' nesnesinin 'anahtarları' niteliği yok

Sep 29 2020

Sınıflandırma problemini çözmeye çalışıyorum. Neden bu hatayı aldığımı bilmiyorum:

AttributeError: 'str' object has no attribute 'keys'

Bu ana kod :

def generate_arrays_for_training(indexPat, paths, start=0, end=100):       
    while True:
        from_=int(len(paths)/100*start)
        to_=int(len(paths)/100*end)
        for i in range(from_, int(to_)):
            f=paths[i]
            x = np.load(PathSpectogramFolder+f)
     if('P' in f):
                y = np.repeat([[0,1]],x.shape[0], axis=0)
            else:
                y =np.repeat([[1,0]],x.shape[0], axis=0) 
            yield(x,y)
history=model.fit_generator(generate_arrays_for_training(indexPat, filesPath, end=75) ## problem here
                   steps_per_epoch=int((len(filesPath)-int(len(filesPath)/100*25))), 
                   validation_steps=int((len(filesPath)-int(len(filesPath)/100*75))),
                   verbose=2,class_weight="balanced",
                  epochs=15, max_queue_size=2, shuffle=True, callbacks=[callback])

nerede generate_arrays_for_trainingfonksiyon dönüş xve y. x2B bir kayan sayı dizisidir ve y[0,1] 'dir.

Hata :

Traceback (most recent call last):
  File "/home/user1/thesis2/CNN_dwt2.py", line 437, in <module>
    main()
  File "/home/user1/thesis2/CNN_dwt2.py", line 316, in main
    history=model.fit_generator(generate_arrays_for_training(indexPat, filesPath, end=75), 
  File "/home/user1/.local/lib/python3.8/site-packages/tensorflow/python/util/deprecation.py", line 324, in new_func
    return func(*args, **kwargs)
  File "/home/user1/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 1815, in fit_generator
    return self.fit(
  File "/home/user1/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 108, in _method_wrapper
    return method(self, *args, **kwargs)
  File "/home/user1/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 1049, in fit
    data_handler = data_adapter.DataHandler(
  File "/home/user1/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/data_adapter.py", line 1122, in __init__
    dataset = dataset.map(_make_class_weight_map_fn(class_weight))
  File "/home/user1/.local/lib/python3.8/site-packages/tensorflow/python/keras/engine/data_adapter.py", line 1295, in _make_class_weight_map_fn
    class_ids = list(sorted(class_weight.keys()))

AttributeError: 'str' object has no attribute 'keys'

Yanıtlar

2 PoeDator Sep 29 2020 at 19:32

sorununuz, ilettiğiniz class_weight="balanced"parametreden kaynaklanıyormodel.fit()

uygun model.fit () referans : bu parametre, bir dicti olmalıdır isteğe bağlı sözlük eşleme sınıf indeksi (tamsayı) bir ağırlık (float) değerine, (sadece eğitim sırasında) kayıp fonksiyonunu ağırlık kullanılır. Bu, modele yetersiz temsil edilen bir sınıftan örneklere "daha fazla dikkat etmesini" söylemek için yararlı olabilir.

class_weight=Nonetest için deneyin , orijinal hatadan kurtulmalıdır. Daha sonra class_weightdengesiz veri kümesi sorununu ele almak için uygun bir karar verin .