python - 使用第二动量作为新成本函数的一部分? (Tensorflow 和/或 keras)

标签 python tensorflow deep-learning keras mathematical-optimization

我目前正在尝试采用 Adam 的二阶矩项 v_t,并将其用作成本函数中的附加项。我怎样才能实现这样的事情:

Cost = Cross Entropy + v_t*some_function(weights)

这可以在 python 中完成吗?或者我是否必须编写自己的 C++ 代码才能完成此操作?这在像 Keras 这样的框架中也很容易实现吗? 这是我试图添加到 keras 中的成本函数的代码:

def my_loss(y_pred, y_true, current_weights, v_t):
     normal_loss=K.categorial_cross_entropy(y_pred,y_true)
     additional_term=K.dot(K.square(current_weights - K.some_function(current_weights)), v_t)
     return normal_loss + additional_term

最佳答案

无论您使用什么框架执行此操作,这都会有问题。具体来说,我们从 ADAM paper相关行:

g_t = d Cost / d weights
v_t = beta2 * v_{t-1} + (1 - beta2) g_t^2

现在,如果您要将 v_t 包含在 Cost 中,这将是一个隐式方程:

g_t = d Cross Entropy / d weights + d (v_t*some_function) / d weights
v_t = beta2 * v_{t-1} + (1 - beta2) g_t^2

注意 v_t 如何出现在两个等式中。我们可以将其扩展为更清晰

v_t = beta2 * v_{t-1} + (1 - beta2) [d Cross Entropy / d weights + d (v_t*some_function) / d weights]^2

您可以尝试精确地解决这个问题,但这样做您将不得不使用某种形式的隐式求解器,这在计算上会非常昂贵。一种方法是 fixed point iteration .

关于python - 使用第二动量作为新成本函数的一部分? (Tensorflow 和/或 keras),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44893395/

相关文章:

python - 需要 fit_generator() 的具体示例

python - 所选环境中没有 Pip 安装程序

python - 如何在python中的列表中创建列表

python - keras中的只读模式

matlab - 训练用于图像分割的神经网络

machine-learning - 关于简单自动编码器实现的问题

python - 如何在 Spyder 4 中运行选定的线路?

python - 没有名为 rest_authusers 的模块错误

tensorflow - 为什么 softmax_cross_entropy_with_logits_v2 返回成本甚至相同

python - tensorflow 2 : shape mismatch when serialize and decode it back