【问题标题】:Use layer output in keras custom loss在 keras 自定义损失中使用层输出
【发布时间】:2018-06-28 23:15:58
【问题描述】:

我正在 Keras 中开发自定义损失函数,我需要第一层输出。

我怎样才能找回它?

def custom_loss(y_true, y_pred):
    cross = K.mean(K.binary_crossentropy(y_true, y_pred), axis = 1)
    layer_output = model.get_layer_output(1) # this is what i'd like to use
    return cross  + perturb

【问题讨论】:

标签: python neural-network keras layer


【解决方案1】:

检查docs,您可以使用model.get_layer() 方法检索图层。然后,您可以传递所需的索引或传递层的名称。

获取层后,您可以使用layer.output 属性轻松获取其输出,如文档中的here 所述。

结合两者,您可以获得所需层的输出。

【讨论】:

  • 您认为可以在我的 custom_loss 中获得批次吗?我想直接从损失中做出新的预测
  • 嘿@FrancescoPegoraro 很高兴这对你有用:) 所以,你的批次是指你的训练批次吗?还是按批次完成的分级更新?
  • 对不起@DarkCygnus 我忘了说谢谢!无论如何,我的意思是训练批次,我知道这听起来很奇怪......
  • @FrancescoPegoraro 嗯,不太确定。您想使用此批次上的当前样本作为损失计算的一部分(即与该 y_pred 对应的 X)?
  • @FrancescoPegoraro 我会考虑一下,稍后再回复你......同时,我前段时间写的一些answer 可能有用(如设法将额外的变量传递给您的自定义损失函数,您可以通过以某种方式传递这些批处理元素来适应您的需求)
猜你喜欢
  • 1970-01-01
  • 2019-06-19
  • 2018-07-22
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多