Keras:使用K.gradients的梯度上升

时间:2019-10-28 15:20:22

标签: python tensorflow keras

我目前正在尝试训练Keras模型以使其损失函数最大化。由于内置的​​Optimizers选择将损失降到最低,我想知道是否有可能使用Keras进行梯度上升。

我尝试使用负损失函数,但操作失败。

关于如何解决此问题的任何想法?

当前尝试:

loss = -K.log(other_parameter_input)

grad = K.gradients(loss, self.model.trainable_weights)
self.get_gradients = K.function(inputs=[self.price_vector_input, 
                                  self.prev_weight_input, self.cash_bias_input, mu, y,
                                  self.model.output], outputs=grad)

updates = [self.learning_rate * g for g in grads]

modelWeights = self.model.get_weights()
updateWeights = [np.add(wT, uT) for (wT, uT) in zip(modelWeights, updates)]
self.model.set_weights(updateWeights)

1 个答案:

答案 0 :(得分:1)

简单地使用乘法逆,所以像loss = 1 / -K.log(other_parameters)之类的东西突然又成为最小化问题了…… 不要成为使损失最大化的人。