2017-05-04 6 views
0

왜이 코드는 손실 함수에 대해 잘 작동하지만 "ValueError : 피연산자를 셰이프 (32,) (24,) (32,)와 함께 브로드 캐스트 할 수 없습니다"라는 반복을 한 후에 메트릭이 실패합니다.내 keras 사용자 지정 메트릭이 작동하지 않는 이유는 무엇입니까?

"categorical_crossentropy"를 따옴표로 사용하면 작동합니다. 내 맞춤 측정 항목은 keras.losses와 동일한 것으로 보입니다.

import keras.backend as K 
def categorical_crossentropy(y_true, y_pred): 
    return K.categorical_crossentropy(y_pred, y_true) 

fc.compile(optimizer=Adam(.01), loss=categorical_crossentropy, metrics=[categorical_crossentropy]) 
fc.fit(xtrain, ytrain, validation_data=(xvalid, yvalid), verbose=0, 
     callbacks=[TQDMNotebookCallback(leave_inner=True, leave_outer=True)], 
     nb_epoch=2) 

답변

0

keras.metrics에서 categorical_crossentropy를 가져 오면 작동합니다. K를 가져 오기보다는 오히려 위의 이유가 작동하지 않는 이유는 모르겠지만 적어도 이것은 해결책입니다.

메트릭 매개 변수에 손실 함수가 필요하지 않은 것 같습니다. 자동으로 계산되고 교육 및 검증을 위해 표시되기 때문입니다.

관련 문제