我试图在一个keras模型中使用huber-loss(写DQN),但是我得到了坏的结果,我认为我做错了什么。我的is代码在下面。
model = Sequential()
model.add(Dense(output_dim=64, activation='relu', input_dim=state_dim))
model.add(Dense(output_dim=number_of_actions, activation='linear'))
loss = tf.losses.huber_loss(delta=1.0)
model.compile(loss=loss, opt='sgd')
return model
您可以将Tensorflow的^{} 包装在自定义的Keras loss函数中,然后将其传递给您的模型。
包装器的原因是Keras只将
y_true, y_pred
传递给loss函数,您可能还想使用许多参数中的一些来tf.losses.huber_loss
。所以,你需要一种结束方式,比如:我带着同样的问题来这里。接受的答案使用
logcosh
,它可能具有类似的属性,但并不完全是Huber损失。下面是我如何实现Keras的Huber损失(注意,我使用的Keras来自Tensorflow 1.5)。根据您是想减少损失还是平均损失,使用上面的相应函数。
我在调查凯拉斯的损失。显然logcosh和huber损失有相同的性质。更多关于它们相似性的细节可以看到here。
相关问题 更多 >
编程相关推荐