【问题标题】:How to create a loss function which changes over epoch in Keras如何在 Keras 中创建一个随时代变化的损失函数
【发布时间】:2017-02-24 14:20:55
【问题描述】:

我想创建一个自定义损失函数,它的权重项会根据我所处的时代进行更新。

例如: 假设我有一个损失函数,其权重为beta,其中 beta 在前 20 个时期增加...

def custom_loss(x, x_pred): 
    loss1 = objectives.binary_crossentropy(x, x_pred)
    loss2 = objectives.mse(x, x_pred)
    return (beta*current_epoch/20) * loss1 + loss2

如何在 keras 损失函数中实现这样的功能?

【问题讨论】:

    标签: python machine-learning keras


    【解决方案1】:

    查看他们的文档,他们提到您可以使用为每个数据点返回标量的 theano/Tf 符号函数。 所以你可以做这样的事情

    loss = tf.contrib.losses.softmax_cross_entropy(x, x_pred) * 
           (beta * current_epoch / 20 ) +  
           tf.contrib.losses.mean_squared_error
    

    您必须将 x 和 x_pred 作为 x 和 x_pred 作为 tf.placeholders 传递 我认为对于模型创建,您可以使用 keras,但是您必须再次使用 sess.run() 运行计算图

    参考资料: https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html#using-keras-models-with-tensorflow

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2020-02-20
      • 2020-08-18
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多