将此损失函数方程转换为python代码

问题描述 投票:0回答:1

请检查此链接的等式,并将其转换为简单的keras模型的python损失函数。

EQUATION PICTURE OR IMAGE LINK FOR CONVERTING IT TO PYTHON'S KERAS REQUIRED LOSS EQUATION

其中图片中方程式的最大部分或曲线选择的部分是铰链损耗,yi表示每一个的标签例如,φ(x)表示特征表示,b是偏差,k是训练示例的总数,w是要学习的分类器。

为了便于检查,示例方程式为-

min(w) [
1/k(sum of i to k)
max(0, 1 - y_i(w.φ(x) - b))
]
+
1/2||w||^ 2 
.

实际上,我可以在图中找到方程的最大部分或弯曲部分,但找不到1/2 * || w || ^ 2部分。

您也检查此链接以寻求帮助-

similar link

[我在此处附加了一些示例代码以明确说明我的问题:

print("Create Model")
model = Sequential()
model.add(Dense(512,     
input_dim=4096, init='glorot_normal',W_regularizer=l2(0.001),activation='relu'))
model.add(Dropout(0.6))
model.add(Dense(32, init='glorot_normal',W_regularizer=l2(0.001)))
model.add(Dropout(0.6))
model.add(Dense(1, init='glorot_normal',W_regularizer=l2(0.001),activation='sigmoid'))

adagrad=Adagrad(lr=0.01, epsilon=1e-08)     
model.compile(loss= required_loss_function, optimizer=adagrad)

def required_loss_function(y_true, y_pred): 
      IN THIS LOSS FUNCTION, 
      CONVERT THE EQUATION IN THE 
      PICTURE INTO PYTHON CODE.

提一提,您要查找的是-1/2 * || w || ^ 2。正如我可以在链接的图片中找到等式的其余部分或其他部分的python代码。铰链损耗部分可以使用以下公式轻松计算-

import keras

keras.losses.hinge(y_true, y_pred)

如果需要进一步的帮助,请发表评论以获取详细信息。

python keras loss-function equation-solving hinge-loss
1个回答
0
投票
您的屏幕快照显示了整个

目标功能,但是只有sum(max(...))术语称为loss术语。因此,只需在required_loss_function中实现该术语即可。确实,您可能可以使用keras库中预烘焙的铰链丢失,而不用自己编写-当然,除非您应该自己将其编写为练习的一部分。另一个项,0.5 * || w || ^ 2项,是

正则化

项。具体来说,这是一个L2正则化术语。 keras具有一种完全独立的处理正则化的方法,您可以在https://keras.io/regularizers/处阅读。基本上,这相当于创建一个l2实例keras.regularizers.l2(lambdaParameter)并使用.add()方法将其附加到您的模型中(您的屏幕截图方程式没有一个可缩放正则化项的参数-因此,如果这确实是您想要的应该实现,这意味着您的lambdaParameter为1.0)。但是您提供的清单似乎已经在不同的上下文中多次应用了l2正则化器(我完全不熟悉keras,所以我真的不知道发生了什么,我想这是更多比您的屏幕快照中代表的模型更复杂的模型)。

两种方法,您的问题的答案是正则化项是单独处理的,并且

not

是否属于损失函数(损失函数的签名也向我们暗示了:没有传递w参数进入其中-仅y_truey_pred)。
© www.soinside.com 2019 - 2024. All rights reserved.