张量的加权平均

Posted

技术标签:

【中文标题】张量的加权平均【英文标题】:weighted average of tensor 【发布时间】:2017-06-19 07:39:16 【问题描述】:

我正在尝试在 keras 框架中实现自定义目标函数。 分别采用两个参数张量 y_true 和 y_pred 的加权平均函数;权重信息来自 y_true 张量。

张量流中有加权平均函数吗? 或者关于如何实现这种损失函数的任何其他建议?

我的函数看起来像这样:

函数(y_true,y_pred) A=(y_true-y_pred)**2 w - 可从 y_true 导出,与 y_true 形状相同的张量 return average(A, weights=w)

y_true 和 y_pred 是 3D 张量。

【问题讨论】:

这里有一种操作可学习加权平均值的简单方法:***.com/questions/62595660/… 【参考方案1】:

您可以使用来自here 的keras 上的现有目标之一(也称为损失)。

您也可以实现自己的自定义函数损失:

from keras import backend as K

def my_loss(y_true, y_pred):
    return K.mean(K.square(y_pred - y_true), axis=-1)

# Let's train the model using RMSprop
model.compile(loss=my_loss, optimizer='SGD', metrics=['accuracy'])

注意K 模块,它是您应该使用的 keras 后端来充分利用 keras 性能,除非您不关心性能问题,否则不要这样做:

def my_bad_and_slow_loss(y_true, y_pred):
    return sum((y_pred - y_true) ** 2, axis=-1)

对于您的具体情况,如果您需要帮助编写它,请编写您想要的目标函数。

更新

你可以试试这个来提供权重 - W 作为损失函数:

def my_loss(y_true, y_pred):
    W = np.arange(9) / 9.  # some example W
    return K.mean(K.pow(y_true - y_pred, 2) * W)

【讨论】:

感谢您的回答! mean_squared_error 会很好,除了我需要为每个条目应用权重。手头的任务是通过cnn(编码-解码架构)进行语义分割;两个阶级,严重不平衡。我知道 keras 中的权重类或样本权重,但是类之间的比率因图像而异。这就是为什么我正在考虑构建权重张量以相应地为每个像素应用系数。 为您的案例更新了示例。如果需要更多帮助,请发布您尝试创建的确切计算。

以上是关于张量的加权平均的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 PyTorch 中注意力分数和编码器输出的加权平均值?

时间序列之加权移动平均

R语言计算加权平均值:weighted.mean函数计算加权平均值matrixStats包的weightedMean函数计算加权平均值SDMTools包的wt.mean函数计算加权平均值

group的加权平均值不等于pandas groupby中的总平均值

简单移动平均线加权移动平均线指数平滑移动平均

非正常情况下的移动加权平均算法