如何创建一个在Keras中改变时代的损失函数

时间:2016-10-15 05:15:08

标签: python machine-learning keras

我想创建一个自定义丢失函数,其重量项根据我所处的时代进行更新。

例如: 让我们说我有一个损失函数,其权重为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损失函数中实现这样的东西?

1 个答案:

答案 0 :(得分:0)

查看他们的文档,他们提到您可以使用为每个数据点返回标量的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