在 keras 自定义损失中获取批量大小

数据挖掘 喀拉斯 损失函数
2021-09-18 01:51:20

我正在 keras 中实现自定义损失,例如总和:

def custom_loss(y_true, y_pred):
    K.sum(y_true, y_pred)

现在,我想按批量大小对其进行标准化。是否可以从 y_true 或 y_pred 检索批量大小?

3个回答

我会说这在很大程度上取决于您如何设置代码。您正在创建什么类型的模型?您没有将批量大小设置为全局参数吗?你不能只用那个吗?另外,假设 y_true 是一个 numpy 矩阵,您可以使用: y_true.shape[dimension_representing_batch_size]作为获取大小的一种方式吗?

您的批量大小是 y_true.shape[0]

归一化,我假设你正在寻找每个观察的损失,你需要的是下面,

def custom_loss(y_true, y_pred):
    return K.sum(y_true, y_pred) / tf.constant(y_true.shape[0], dtype=tf.int32)

或者为什么不直接取平均值?

def custom_loss(y_true, y_pred):
    return K.mean(y_true, y_pred)

您可以使用 :

def custom_loss(y_true, y_pred):
    return K.sum(y_true, y_pred) / tf.shape(y_true)[0], dtype=tf.int32)