请检查此链接的等式,并将其转换为简单的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)
如果需要进一步的帮助,请发表评论以获取详细信息。
目标功能,但是只有 正则化sum(max(...))
术语称为loss术语。因此,只需在required_loss_function
中实现该术语即可。确实,您可能可以使用keras库中预烘焙的铰链丢失,而不用自己编写-当然,除非您应该自己将其编写为练习的一部分。另一个项,0.5 * || w || ^ 2项,是l2
实例keras.regularizers.l2(lambdaParameter)
并使用.add()
方法将其附加到您的模型中(您的屏幕截图方程式没有一个可缩放正则化项的参数-因此,如果这确实是您想要的应该实现,这意味着您的lambdaParameter
为1.0)。但是您提供的清单似乎已经在不同的上下文中多次应用了l2
正则化器(我完全不熟悉keras,所以我真的不知道发生了什么,我想这是更多比您的屏幕快照中代表的模型更复杂的模型)。
两种方法,您的问题的答案是正则化项是单独处理的,并且
not
是否属于损失函数(损失函数的签名也向我们暗示了:没有传递w
参数进入其中-仅y_true
和y_pred
)。