我正在 keras 中实现自定义损失,例如总和:
def custom_loss(y_true, y_pred):
K.sum(y_true, y_pred)
现在,我想按批量大小对其进行标准化。是否可以从 y_true 或 y_pred 检索批量大小?
我正在 keras 中实现自定义损失,例如总和:
def custom_loss(y_true, y_pred):
K.sum(y_true, y_pred)
现在,我想按批量大小对其进行标准化。是否可以从 y_true 或 y_pred 检索批量大小?
我会说这在很大程度上取决于您如何设置代码。您正在创建什么类型的模型?您没有将批量大小设置为全局参数吗?你不能只用那个吗?另外,假设 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)