请检查此链接的等式,并将其转换为用于简单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部分。
您也检查此链接以寻求帮助-
在这里,我附加了一些示例代码来清除我的问题的概念:
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)
如果您需要进一步的帮助,请发表评论以获取详细信息。
答案 0 :(得分: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,所以我真的不知道发生了什么。我想比您的屏幕快照中所示的模型更复杂)。
无论哪种方式,您的问题的答案是正则化项是单独处理的,并且不属于损失函数(损失函数的签名也为我们提供了暗示:没有{ {1}}参数传递给它-仅w
和y_true
)。