gpt4 book ai didi

python - Keras,使用 y_pred y_true 的不同属性最大化自定义损失

转载 作者:行者123 更新时间:2023-12-01 07:01:45 28 4
gpt4 key购买 nike

我有一个具体问题,但在 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_1attribute_2 向量?
  • 是否可以知道我们在哪一批中计算损失函数? (例如:100个样本,批量大小为10,将有10个批处理计算损失)
  • 是否可以访问x向量?对于 x 向量,我的意思是包含像训练和验证集一样传递的样本的向量。拥有 x 向量对于使用 HashMap 或类似工具获取 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 更多的参数。该文档有一些示例,例如带有附加参数的“Huber_Loss”:https://keras.io/losses/你可以检查github上的keras代码来获取类似修改功能的模板:https://github.com/keras-team/keras/blob/master/keras/losses.py .

不太确定我理解问题 2 和 3,尽管可以将“x 向量”作为修改后的损失函数(如 y_pred)中的参数传递,但这非常具有推测性。

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

我希望这会有所帮助。

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com