python : AttributeError : 'str'객체에 'keys'속성이 없습니다.
Sep 29 2020
분류 문제를 해결하려고합니다. 이 오류가 발생하는 이유를 모르겠습니다.
AttributeError: 'str' object has no attribute 'keys'
이것은 주요 코드입니다 .
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])
여기서 generate_arrays_for_training함수 반환 x및 y. x부동 숫자의 2D 배열 y이며 [0,1]입니다.
오류 :
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'
답변
2 PoeDator Sep 29 2020 at 19:32
class_weight="balanced"전달 하는 매개 변수 로 인해 문제가 발생 합니다.model.fit()
받는있어서 model.fit () 참조 :이 파라미터는 딕셔너리되어야 선택적 사전 맵핑 클래스 인덱스 (정수) 중량 (플로트) 값 (전용 트레이닝 동안) 손실 함수에 가중치를 사용한다. 이는 잘 표현되지 않은 클래스의 샘플에 "더 많은주의를 기울 이도록"모델에 지시하는 데 유용 할 수 있습니다.
class_weight=None테스트를 시도 하면 원래 오류가 제거됩니다. 나중에 class_weight불균형 데이터 세트 문제를 해결 하기 위해 적절한 사전을 제공하십시오 .