我有一个特定的问题,我没有在stackoverflow上找到答案。
首先,我想向您概述我的问题。
我正在使用CNN和图像进行二进制分类。对于每个图像,我在一个csv文件中都有一个与之相关的信息。
为简单起见,我将按数字顺序调用图像,并将所有信息都以CSV格式放置。
id, images, attribute_1, attribute_2, label
1, image_1.png, 10, 11, 1
2, image_2.png, 8, 19, 1
3, image_3.png, 3, 2, 1
4, image_4.png, 10, 8, 1
阅读Keras文档我了解,为了创建自定义损失函数,我必须编写如下内容:
def customLoss(yTrue,yPred):
return some_calculus_with_yTrue_and_yPred
我的问题是:
customLoss
和attribute_1
向量之类的更多参数传递给attribute_2
? x
向量?对于x
向量,我的意思是包含通过训练和验证集的样本的向量。拥有x
向量对于使用哈希图或类似工具获取attribute_1
和attribute_2
之类的其他信息很有用。我的想法是执行以下操作:
def customLoss(yTrue,yPred, attribute_1, attribute_2):
loss = 0
if yTrue[i] == yPred[i]:
loss = attribute_1 + attribute_2
else:
otherwise
return loss
此示例非常简单,但是仅需要了解我想如何使用其他参数来计算我的自定义损失函数。
最后但并非最不重要的一点是,是否可以指定较高的损失优于较低的损失? (与标准方法相反)
谢谢。
答案 0 :(得分:1)
对于第一个问题,我相信答案是肯定的:您可以传递比y_pred和y_true更多的参数。该文档有一些示例,例如带有附加参数https://keras.io/losses/的“ Huber_Loss”,您可以检查github上的keras代码以获得类似的修改功能的模板:https://github.com/keras-team/keras/blob/master/keras/losses.py。
不太可能我理解问题2和3,尽管可以将“ x向量”作为参数传递给已修改的损失函数(例如y_pred),但这是非常推测性的。
问题4:也许将损失乘以-1?
我希望这会有所帮助。