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

2024-09-26 22:10:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在试着用亚当的二阶矩项,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

Tags: 函数代码truefunctionsomecurrentadditional成本
1条回答
网友
1楼 · 发布于 2024-09-26 22:10:52

这将是有问题的,不管你用什么样的框架。具体来说,我们从ADAM paper得到了相关的行:

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

现在,如果你要把v\u t计入成本,这将是一个隐含的等式:

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。你知道吗

相关问题 更多 >

    热门问题