2017-05-04 80 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.仍然不知道爲什麼上述不起作用,但至少這是一個解決方案。

無論如何,它看起來像指標參數中沒有必要使用損失函數,因爲它會自動計算並顯示用於培訓和驗證。

相關問題