我正在实现自己的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