【问题标题】:how to create and use weighted metrics in Keras?如何在 Keras 中创建和使用加权指标?
【发布时间】:2020-06-09 12:05:21
【问题描述】:

我想制作一个加权指标,并在 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

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

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

【问题讨论】:

  • 嗨@Peter,请提供最少的可重现代码和遇到的错误。

标签: python tensorflow keras tensorflow2.0


【解决方案1】:

当您在训练期间将 weighted_metrics 传递给 model.compile 时,模型需要一个 sample_weight 列向量来计算加权指标。在您的情况下,您似乎正在通过 flatten tensor。形状应该是 (16384, 1) 而不是 (16384)。更多信息 https://www.tensorflow.org/guide/keras/train_and_evaluate#using_a_validation_dataset

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 2019-01-24
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多