Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将此损失函数方程转换为python代码_Python_Keras_Loss Function_Equation Solving_Hinge Loss - Fatal编程技术网

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

将此损失函数方程转换为python代码,python,keras,loss-function,equation-solving,hinge-loss,Python,Keras,Loss Function,Equation Solving,Hinge Loss,请检查此链接的等式,并将其转换为简单keras模型的python损失函数 其中,图片中等式的最大部分或所选曲线部分是铰链损耗,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部分

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

其中,图片中等式的最大部分或所选曲线部分是铰链损耗,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部分

您也可以查看此链接以获取帮助-

这里我附上了一些示例代码,以明确我的问题的概念:

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)

如果您需要进一步帮助,请评论详细信息。

您的屏幕截图显示了整个目标函数,但只有
总和(最大值(…)
项称为损失项。因此,只有该术语需要在
required\u loss\u函数中实现。事实上,您可能可以使用keras库中的预烘焙铰链损失,而不是自己编写,当然,除非您应该自己编写它作为练习的一部分

另一项,0.5*| | w | ^ 2项,是正则化项。具体来说,它是一个L2正则化项。keras有一种完全独立的处理正则化的方法,您可以在上阅读。基本上,它相当于创建一个
l2
实例
keras.regularizers.l2(lambdapameter)
,并使用
.add()
方法将其附加到模型中(你的屏幕截图方程没有缩放正则化项的参数——因此,如果这就是你应该实现的,那就意味着你的
lambdaParameter
将是1.0)

但您提供的列表似乎已经在不同的上下文中多次应用了这样的
l2
正则化器(我对keras一点也不熟悉,所以我真的不知道发生了什么-我想这是一个比您的屏幕截图中表示的模型更复杂的模型)


不管是哪种方式,您的问题的答案都是正则化项是单独处理的,不属于损失函数(损失函数的签名也给了我们这个提示:没有
w
参数传入它,只有
y\u true
y\u pred
).

如果您展示了迄今为止您成功生成的代码,并指出其失败的方式和地方,可能会帮助stackoverflow社区帮助您消除特定的障碍。如果您正在寻找铰链损失,您可以尝试查看python代码的此链接-@jez请检查我的新更新,并帮助我解决问题1/方程的2*| w | | ^ 2部分。@Sampath请检查我的新更新,并帮助我解决方程的1/2*| w | | ^ 2部分。您已经有了部分损失,w |正则化器=l2(0.001)部分在损失中添加了一个项,基本上是该层的lambda*| w | ^ 2,所以您只需要将lambda设置为1。