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

fob*_*122 5 python machine-learning keras

我想创建一个自定义丢失函数,其权重项根据我所处的时代而更新.

例如:假设我有一个具有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
Run Code Online (Sandbox Code Playgroud)

我怎么能在keras损失函数中实现这样的东西?

小智 0

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

loss = tf.contrib.losses.softmax_cross_entropy(x, x_pred) * 
       (beta * current_epoch / 20 ) +  
       tf.contrib.losses.mean_squared_error
Run Code Online (Sandbox Code Playgroud)

您必须将 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