如何在Keras中创建和使用加权度量



我想制作一个加权度量,并在Keras训练我的数据时将其打印出来。然而,我找不到任何可行的例子来说明如何做到这一点。

运行时:

metrics = [MyClass.MyWeightedMetric]
model.compile(optimizer=RMSprop,loss="mean_squared_error",metrics=metrics)

其中

class MyClass: 
@staticmethod
def MyWeightedMetric(y_true,y_pred,sample_weight=None):
print(sample_weight)
#do stuff that doesn't even use sample_weight for now

然后它一直打印"无"。如果我将编译行更改为

model.compile(optimizer=RMSprop,loss="mean_squared_error",weighted_metrics=metrics)

然后我得到错误:

(0) Invalid argument: Can not squeeze dim[0], expected a dimension of 1, got 16384

调用model.fit((时。我不清楚我做错了什么,也不清楚我应该做什么。我试着像这个例子中那样创建一个子类https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Metric但随之而来的是一系列我无法解决的错误。

在模型编译阶段,我可以提供keras中加权度量的工作示例吗?我发现了许多未加权用法的例子,但目前似乎找不到工作加权度量的例子。值得一提的是,我使用的是Tensorflow 2.0

在训练期间将weighted_metrics传递给model.compile时,模型需要sample_weight列向量来计算加权度量。在您的情况下,似乎您正在传递平坦张量。形状应该是(16384,1(而不是(16384(。进一步信息https://www.tensorflow.org/guide/keras/train_and_evaluate#using_a_validation_dataset

最新更新