我有一个特定的问题,我没有在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


我的问题是:


是否可以将customLossattribute_1向量之类的更多参数传递给attribute_2
是否可以知道我们正在计算哪一批损失函数? (例如:100个样本,批次大小为10,将有10个批次将计算损失)
是否可以访问x向量?对于x向量,我的意思是包含像训练和验证集一样通过的样本的向量。拥有x向量对于使用哈希图或类似工具获取诸如attribute_1attribute_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


这个例子非常简单,但是只需要了解我想如何使用其他参数来计算我的自定义损失函数即可。

最后但并非最不重要的一点是,是否可以指定较高的损失优于较低的损失? (与标准方法相反)

谢谢大家

最佳答案

对于第一个问题,我相信答案是肯定的:您可以传递比y_pred和y_true更多的参数。文档中有一些示例,例如带有附加参数https://keras.io/losses/的“ Huber_Loss”,您可以检查github上的keras代码,以获取类似修饰功能的模板:https://github.com/keras-team/keras/blob/master/keras/losses.py

虽然可以将“ x向量”作为参数传递给修改后的损失函数(例如y_pred),但不是很确定我理解问题2和3,但这是非常推测性的。

问题4:也许将损失乘以-1?

我希望这有帮助。

关于python - Keras,使用y_pred y_true的differents属性最大化自定义损失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58598761/

10-12 17:04
查看更多