gpt4 book ai didi

python - 标签大小与 target_names 不同 : Tensorflow Multi-Input Regression converting to Classification

转载 作者:行者123 更新时间:2023-11-30 09:31:15 24 4
gpt4 key购买 nike

我正在尝试将多输入混合输入(txt、图像)keras 模型从回归输出(房价)转换为分类输出(卧室数量)。特别是,我正在修改本教程

https://www.pyimagesearch.com/2019/02/04/keras-multiple-inputs-and-mixed-data/

作为一个分类器。我有几个关于类别数量的技术问题,并且还收到一个我不完全理解的错误。

我已将网络的最后一层更改为 softmax:

x = Dense(11, activation="softmax")(x)

但是我只有 10 个类别(数据集涵盖 1-10 间卧室的房屋)。但是使用 Dense(10,...) 我收到以下错误:

InvalidArgumentError: Received a label value of 10 which is outside >the valid range of [0, 10). Label values: 3 2 5 2 10 3 2 5

我理解这个错误,以及如何避免它,但考虑到我没有 0 间卧室的房子,为什么范围 [0,10) 不够呢?

当我尝试获取分类报告时,我收到两个警告:

UserWarning: labels size, 6, does not match size of target_names, 10 UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.

我认为这可能是因为我的分类报告只包含 1-6 间卧室的房屋。但我不确定 - 如果您能提供任何见解,我们将不胜感激。

我的代码和数据集可以从这里克隆: https://github.com/davidrtfraser/blog-keras-multi-input

最佳答案

通常在机器学习中,N 个类的标签被编码为 0 到 N - 1 范围内的整数,因为这直接从类索引映射,因此您可以使用 argmax 来恢复它们模型输出。

因此,您需要以相同的方式对标签进行编码,最简单的方法是将您的 [1, 10] 标签减去 [0, 9] 通过减去每个标签中都有一个,并且要从模型输出中获取卧室数量,您可以向输出标签添加 1。

关于python - 标签大小与 target_names 不同 : Tensorflow Multi-Input Regression converting to Classification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57030382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com