python - 神经网络模型可以使用加权平均(和)平方误差作为损失函数吗?

标签 python neural-network keras

我对这个研究领域一无所知,这可能是一个非常愚蠢的问题。我想构建一个普通的 ANN,但我不确定是否可以使用加权均方误差作为损失函数。 如果我们不平等对待每个样本,我的意思是我们更关心样本的某些类别的预测精度而不是其他类别,那么我们想要形成一个加权损失函数。 比方说,我们有一个分类特征 cii 是样本的索引,为了简单起见,我们假设这个特征采用二进制值,0 或 1。因此,我们可以将损失函数形成为

(ci + 1)(yi_hat - yi)^2

#and take the sum for all i

反向传播会不会有什么问题?我没有看到计算梯度或更新层间权重的任何问题。 而且,如果没问题,我该如何在 Keras 中编写这个损失函数?因为损失函数好像只有两个参数,y_truey_pred,那我要怎么代入向量c呢?

最佳答案

这绝对没有错。函数可以自己声明常量,甚至可以从外部范围获取常量:

import keras.backend as K

c = K.constant([c1,c2,c3,c4,...,cn])

def weighted_loss(y_true,y_pred):
    loss = keras.losses.get('mse')
    return c * loss(y_true,y_pred)

完全像你的:

def weighted_loss(y_true,y_pred):

    weighted = (c+1)*K.square(y_true-y_pred)
    return K.sum(weighted)

关于python - 神经网络模型可以使用加权平均(和)平方误差作为损失函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931014/

相关文章:

python - 在 Python 中使用 smtplib 发送电子邮件

python - 如何在 python 中创建带参数的单例类

machine-learning - "sparse"在神经网络中意味着什么?

python - 如何在opencv中使用脊线检测过滤器

python - 使用 python 访问受 token 保护的 API 中的数据

machine-learning - 神经网络中的投影层是什么?

python - sklearn中具有多个输出的神经网络

python - Epoch 1/2 103/Unknown - 8s 80ms/step - loss : 0. 0175(model.fit() 即使在超过训练图像总数后也一直运行)

python - Keras:是否有一种简单的方法可以在时期之间对训练集中的数据进行变异(洗牌)?

keras - GlobalAveragePooling1D 在 keras 中做什么?