我正在實現自己的keras丟失函數。我如何訪問張量值?調試keras張量值
我已經試過
def loss_fn(y_true, y_pred):
print y_true
它打印
Tensor("target:0", shape=(?, ?), dtype=float32)
是否有任何keras函數訪問y_true值?
我正在實現自己的keras丟失函數。我如何訪問張量值?調試keras張量值
我已經試過
def loss_fn(y_true, y_pred):
print y_true
它打印
Tensor("target:0", shape=(?, ?), dtype=float32)
是否有任何keras函數訪問y_true值?
通常,y_true
你提前知道 - 準備您的火車語料中......
然而,有一個訣竅,看看裏面y_true
和/或y_pred
值。 Keras給你一個機會來編寫各自的callback來打印神經網絡的輸出。 它會是這個樣子:
def loss_fn(y_true, y_pred):
return y_true # or y_pred
...
import keras.callbacks as cbks
class CustomMetrics(cbks.Callback):
def on_epoch_end(self, epoch, logs=None):
for k in logs:
if k.endswith('loss_fn'):
print logs[k]
這裏loss_fn
是你的損失函數的名稱,當你模型的編譯過程中傳遞到model.compile(...,metrics=[loss_fn],)
功能。
所以,最後,你必須通過這個CustomMetrics
回調作爲參數到model.fit()
:
model.fit(x=train_X, y=train_Y, ... , callbacks=[CustomMetrics()])
PS:如果您在Keras使用Theano(或TensorFlow)喜歡這裏,你寫一個Python程序,然後編譯它並執行。所以,在你的例子中y_true
- 只是一個張量變量,用於進一步編譯和丟失函數計數。
這意味着無法查看其中的值。例如,在Theano中,您可以在執行相應的eval()
函數後查看唯一所謂的共享變量。有關更多信息,請參閱this question。
您無法直接從張量符號變量中獲取值。喲需要編寫一個theano函數來提取值。不要忘記選擇theano作爲Keras的後端。
檢查筆記本鏈接以獲取一些基本的theano變量和函數:get tensor value in call function of own layers