如何使用tf.gradients使用自定义损失函数更新Keras模型?

时间:2019-03-13 01:44:16

标签: python tensorflow keras

我有一个损失函数,它使用Keras模型的输出以及训练情节中的游戏内表现。我想在损失函数上调用tf.gradients以获取关于神经网络权重的损失。我有几件事我不了解如何执行此操作。

1:当我调用model.predict()时,它返回一个数字的numpy数组(采取动作的可能性)。如果我的网络权重采用正确的格式并称为tf.gradients(action,weights),它会返回我期望的渐变,还是仅仅返回0,因为这是我在调用预报()之后从一个numpy数组中提取的数字?我不能只是尝试一下,因为还没有成功调用渐变。

2:假设我有一个做得好的损失函数,该函数是1的值,它是训练情节的不同步骤(由游戏性能加权)的keras模型输出的总和。如何使用tf.gradients获取损失函数的梯度,然后迈出一步?似乎我应该使用model.trainable_weights并调用tf.gradients(loss,weights),但这只会返回Nones的向量。我是否需要弄平砝码或其他东西?我应该从其他地方得到它们吗?

3:有了渐变列表后,我想执行一个渐变步骤。这行代码对吗?

self.AdamOpt.apply_gradients(tf.gradients(L,weights))

其中

self.AdamOpt = tf.train.AdamOptimizer()

0 个答案:

没有答案